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 RangeFromPoint ... on a chartsheet ?

Hi,

The RangeFromPoint method cannot be used on a chartsheet to get the Shape
below given coordinates.

For example, the following code with return the name of the rectangle, if
you draw a rectangle at the top-left corner of a worksheet, but it will
generate a bug for a chart sheet:

Public Sub MyName()

Dim ObjShape As Object

Set ObjShape = ActiveWindow.RangeFromPoint(x:=200, y:=200)
If Not ObjShape Is Nothing Then
MsgBox ObjShape.Name
End If

End Sub

Is there something equivalent for chartsheets?

If not, it would be great that RangeFromPoint is available on Chartsheets.

Regards,

Mr T

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default RangeFromPoint ... on a chartsheet ?

Insert some shapes on the chartsheet and try this in the Chart (sheet)
module

Private Sub Chart_MouseMove(ByVal Button As Long, _
ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim elemID As Long
Dim a As Long
Dim b As Long
Static sName As String
Static oldArg1 As Long

Me.GetChartElement x, y, elemID, a, b
If elemID = xlShape Then
If oldArg1 < a Then
oldArg1 = a
sName = Me.Shapes(a).Name
'set a Shape object ref here perhaps
End If
Application.StatusBar = sName & " X:" & x & " Y:" & y

ElseIf oldArg1 Then
oldArg1 = 0
sName = ""
Application.StatusBar = False
End If

End Sub

The GetChartElement arguments are also returned in the Chart_Select event.

Note xy are chart window coordinates not screen,

Regards,
Peter T


"MrT" wrote in message
...
Hi,

The RangeFromPoint method cannot be used on a chartsheet to get the Shape
below given coordinates.

For example, the following code with return the name of the rectangle, if
you draw a rectangle at the top-left corner of a worksheet, but it will
generate a bug for a chart sheet:

Public Sub MyName()

Dim ObjShape As Object

Set ObjShape = ActiveWindow.RangeFromPoint(x:=200, y:=200)
If Not ObjShape Is Nothing Then
MsgBox ObjShape.Name
End If

End Sub

Is there something equivalent for chartsheets?

If not, it would be great that RangeFromPoint is available on Chartsheets.

Regards,

Mr T



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default RangeFromPoint ... on a chartsheet ?

When reading multiple objects from the selection at drawingobject level
first time the first object that was selected is returned. Thereafter the
order of objects is sorted into ZOrder's (order on sheet), the original
selection order can no longer be read. If you put a loop in your code you'll
see what I mean.

For i = 1 To 2
Set myobj = Selection(1)
MsgBox myobj.Name, , myobj.ZOrder
Set myobj = Selection(2)
MsgBox myobj.Name, , myobj.ZOrder
Next

In the second loop items will returned in ZOrder

Since XL97 MS suggest always use the Shape/ShapeRange level, although
DrawingObjects and "Rectangle" etc has been maintained for backwards
compatibility (and very useful too).

Start afresh and try

Set myobj = Selection.ShapeRange(1)
MsgBox myobj.Name, , myobj.ZOrderPosition
Set myobj = Selection.ShapeRange(2)
MsgBox myobj.Name, , myobj.ZOrderPosition

Items will be returned in ZOrderPosition regardless of the order they were
selected. So if what you say is a bug, and in a sense it is confusing, it
was fixed a long time ago.

I'm curious, why do people keep posting these bug type suggestions in this
manner before having thrashed it in the ng. Thereafter when people respond
normally the OP doesn't reply.

Regards,
Peter T

"MrT" wrote in message
...
Hi,

The RangeFromPoint method cannot be used on a chartsheet to get the Shape
below given coordinates.

For example, the following code with return the name of the rectangle, if
you draw a rectangle at the top-left corner of a worksheet, but it will
generate a bug for a chart sheet:

Public Sub MyName()

Dim ObjShape As Object

Set ObjShape = ActiveWindow.RangeFromPoint(x:=200, y:=200)
If Not ObjShape Is Nothing Then
MsgBox ObjShape.Name
End If

End Sub

Is there something equivalent for chartsheets?

If not, it would be great that RangeFromPoint is available on Chartsheets.

Regards,

Mr T



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default RangeFromPoint ... on a chartsheet ?

Oops - please ignore, it was intended for a different thread

Peter T

"Peter T" <peter_t@discussions wrote in message
...
When reading multiple objects from the selection at drawingobject level..

<snip


  #5   Report Post  
Posted to microsoft.public.excel.programming
mrt mrt is offline
external usenet poster
 
Posts: 70
Default RangeFromPoint ... on a chartsheet ?

Peter,

thanks for that. Very useful !!

MrT

"Peter T" wrote:

Insert some shapes on the chartsheet and try this in the Chart (sheet)
module

Private Sub Chart_MouseMove(ByVal Button As Long, _
ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim elemID As Long
Dim a As Long
Dim b As Long
Static sName As String
Static oldArg1 As Long

Me.GetChartElement x, y, elemID, a, b
If elemID = xlShape Then
If oldArg1 < a Then
oldArg1 = a
sName = Me.Shapes(a).Name
'set a Shape object ref here perhaps
End If
Application.StatusBar = sName & " X:" & x & " Y:" & y

ElseIf oldArg1 Then
oldArg1 = 0
sName = ""
Application.StatusBar = False
End If

End Sub

The GetChartElement arguments are also returned in the Chart_Select event.

Note xy are chart window coordinates not screen,

Regards,
Peter T


"MrT" wrote in message
...
Hi,

The RangeFromPoint method cannot be used on a chartsheet to get the Shape
below given coordinates.

For example, the following code with return the name of the rectangle, if
you draw a rectangle at the top-left corner of a worksheet, but it will
generate a bug for a chart sheet:

Public Sub MyName()

Dim ObjShape As Object

Set ObjShape = ActiveWindow.RangeFromPoint(x:=200, y:=200)
If Not ObjShape Is Nothing Then
MsgBox ObjShape.Name
End If

End Sub

Is there something equivalent for chartsheets?

If not, it would be great that RangeFromPoint is available on Chartsheets.

Regards,

Mr T




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
Excel 2007 and chart as chartsheet Bob Flanagan[_2_] Charts and Charting in Excel 1 August 19th 08 11:32 PM
Is it possible to hyperlink from a worksheet to a chartsheet? kippers Charts and Charting in Excel 1 January 16th 07 12:15 PM
1 ChartSheet, 10 worksheets Martin Wheeler Charts and Charting in Excel 3 January 22nd 05 09:22 PM
RangeFromPoint Only Finds ShapesAt 0, 0 coordinates gfhunt Excel Programming 10 May 23rd 04 04:26 AM
Does RangeFromPoint Method return ranges? Bernie Deitrick Excel Programming 4 May 5th 04 09:51 PM


All times are GMT +1. The time now is 12:22 PM.

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"