Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
mrt mrt is offline
external usenet poster
 
Posts: 70
Default Left of an object on a chart sheet

Hi there,

Here is a problem with no solution so far:
- Create an empty chart, and make it be a chart sheet
- Then add a rectangle on it
- If ActiveChart.SizeWithWindow is set to false, how do you know the
screencoordinates of the Rectangle ? Left will only give you the position
inside the chartarea, and ChatArea.Left is 4 (which is not relative to the
screen)?

Thanks,

MrT

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,441
Default Left of an object on a chart sheet

MrT,

What, exactly, is it that you are trying to do? Why do you need the screencoordinates?

HTH,
Bernie
MS Excel MVP


"MrT" wrote in message
...
Hi there,

Here is a problem with no solution so far:
- Create an empty chart, and make it be a chart sheet
- Then add a rectangle on it
- If ActiveChart.SizeWithWindow is set to false, how do you know the
screencoordinates of the Rectangle ? Left will only give you the position
inside the chartarea, and ChatArea.Left is 4 (which is not relative to the
screen)?

Thanks,

MrT



  #3   Report Post  
Posted to microsoft.public.excel.programming
mrt mrt is offline
external usenet poster
 
Posts: 70
Default Left of an object on a chart sheet

What, exactly, is it that you are trying to do? Why do you need the
screencoordinates?

I know the mouse coordinates which are based on the screen, and want to draw
a shaphe under the mouse cursor, not the chart position/coordinates. So I
need to know either the mouse position relative to the chartarea or to know
the screen coordinates of the chartarea (or of anything on the chart).

Regards,

MrT


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Left of an object on a chart sheet

The chart area on a chart sheet is sized to the inside margins of the
sheet's page set-up. It's probably possible to calaculate your shape's
screen coordinates but quite a lot of work. Another way is to add and size
a chartobject over the shape. This has a 'window' so pretty straightforward
to get its window coordinates which should be within a pixel or two of the
shape (assuming it doesn't have a thick border). Something like this -

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hwnd1 As Long, ByVal hwnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function GetWindowRect Lib "user32" _
(ByVal HWND As Long, lpRect As RECT) As Long

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Sub GetShapeScreenCoords()
Dim shp As Shape, chtObj As ChartObject
Dim hwnd1&, hwnd2&, hwnd3&
Dim shpRect As RECT

On Error Resume Next
Set shp = ActiveSheet.Shapes(1)
On Error GoTo 0

If shp Is Nothing Then
MsgBox "no shape on sheet"
Exit Sub
End If

hwnd1 = FindWindow("XLMAIN", Application.Caption)
hwnd2 = FindWindowEx(hwnd1, 0&, "XLDESK", vbNullString)

With shp
Set chtObj = ActiveSheet.ChartObjects.Add( _
.Left, .Top, .Width, .Height)
End With

chtObj.Activate

hwnd3 = FindWindowEx(hwnd2, 0&, "EXCELE", vbNullString)
Call GetWindowRect(hwnd3, shpRect)

chtObj.Delete

With shpRect
' the shape's pixel coordinates
Debug.Print "x1 " & .Left, "y1 " & .Top
Debug.Print "x2 " & .Right, "y2 " & .Bottom
End With

End Sub

Of course I'm assuming it's some shape's coordinates you're after as you
asked in your OP.

Regards,
Peter T


"MrT" wrote in message
...
What, exactly, is it that you are trying to do? Why do you need the

screencoordinates?

I know the mouse coordinates which are based on the screen, and want to

draw
a shaphe under the mouse cursor, not the chart position/coordinates. So I
need to know either the mouse position relative to the chartarea or to

know
the screen coordinates of the chartarea (or of anything on the chart).

Regards,

MrT




  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 6,582
Default Left of an object on a chart sheet

I need to follow up on Peter's post, but let me give you some advice based
on many hours of unsuccessful trials. I have had no joy when trying to deal
with mouse and screen coordinates in a chart sheet when SizeWithWindow is
false. (I can make it work flawlessly in an embedded chart and in a chart
sheet that sizes to the window.) There is no coordinate consistency in VBA
for this, since the window can be scrolled, and there's no way to get the
scroll position. Perhaps Peter's API approach might help with that, but I
can predict it will be a tedious frustrating process to work out.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
Peltier Technical Services, Inc. - http://PeltierTech.com
_______


"MrT" wrote in message
...
Hi there,

Here is a problem with no solution so far:
- Create an empty chart, and make it be a chart sheet
- Then add a rectangle on it
- If ActiveChart.SizeWithWindow is set to false, how do you know the
screencoordinates of the Rectangle ? Left will only give you the position
inside the chartarea, and ChatArea.Left is 4 (which is not relative to the
screen)?

Thanks,

MrT



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Method 'Left' of object 'DataLabel' failed SysMod Charts and Charting in Excel 2 July 10th 09 04:21 PM
Left object-menu gone when I moved the DB to another computer. Hombrero Excel Discussion (Misc queries) 0 October 24th 07 01:59 AM
convert saved chart in sheet to object Khoshravan Charts and Charting in Excel 2 June 26th 06 09:57 AM
Chart wizard will not place (as object in) graph in same sheet harri Excel Worksheet Functions 0 August 10th 05 03:48 AM
Can't save chart as object in current sheet Ann Scharpf Charts and Charting in Excel 1 December 3rd 04 11:24 PM


All times are GMT +1. The time now is 09:10 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"