Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Shape instead of Target

Is there a fast simple way of determining which shape is left click selected
to a macro? I want the same speed and methodology as when a cell is left
click selected resulting with a Target range being provided to a macro. The
situation is at least 200+ lines (Arrows) on a spreadsheet..


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,073
Default Shape instead of Target

Hi Ray,
If a shape is selected then Shape.Name returns its name.
If the selection is a named range then Shape.Name returns the RefersTo
eg "=Sheet1!$A$1"
If the selection is an unnamed range then an error occurs.
So if your sheet has no named ranges you could use something like...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

If there is a named range(s) on the sheet then you might have to test
for the presence of the "=" in the string strSelectedShape...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
If Left(strSelectedShape, 1) < "=" Then
MsgBox strSelectedShape
End If
NONAME:
End Sub

Ken Johnson

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Shape instead of Target

That's not what I had in mind. I put your code into the VBA code associated
with a blank spreadsheet and added the Worksheet_SelectionChange() code on
the same sheet as follows:

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "targetaddress is " & Target.AddressLocal
End Sub

Then I placed some arrows on the sheet, to provide a shape to select.

When I select a cell, I get the message box stating its address. When I
select a line, nothing happens. Why does one work, and not the other?



"Ken Johnson" wrote in message
oups.com...
Hi Ray,
If a shape is selected then Shape.Name returns its name.
If the selection is a named range then Shape.Name returns the RefersTo
eg "=Sheet1!$A$1"
If the selection is an unnamed range then an error occurs.
So if your sheet has no named ranges you could use something like...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

If there is a named range(s) on the sheet then you might have to test
for the presence of the "=" in the string strSelectedShape...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
If Left(strSelectedShape, 1) < "=" Then
MsgBox strSelectedShape
End If
NONAME:
End Sub

Ken Johnson



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Shape instead of Target

SelectionChange is only triggered by changing the cell selection. Selecting
an object triggers no worksheet event.

--
Regards,
Tom Ogilvy

"Ray Pixley" wrote in message
news:C8%Zf.1683$8g3.680@trnddc02...
That's not what I had in mind. I put your code into the VBA code

associated
with a blank spreadsheet and added the Worksheet_SelectionChange() code on
the same sheet as follows:

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "targetaddress is " & Target.AddressLocal
End Sub

Then I placed some arrows on the sheet, to provide a shape to select.

When I select a cell, I get the message box stating its address. When I
select a line, nothing happens. Why does one work, and not the other?



"Ken Johnson" wrote in message
oups.com...
Hi Ray,
If a shape is selected then Shape.Name returns its name.
If the selection is a named range then Shape.Name returns the RefersTo
eg "=Sheet1!$A$1"
If the selection is an unnamed range then an error occurs.
So if your sheet has no named ranges you could use something like...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

If there is a named range(s) on the sheet then you might have to test
for the presence of the "=" in the string strSelectedShape...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
If Left(strSelectedShape, 1) < "=" Then
MsgBox strSelectedShape
End If
NONAME:
End Sub

Ken Johnson





  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Shape instead of Target

Your original post wasn't visible when I answered your followup. My answer
was given from the perspective of selection a shape.

For clicking on a shape:
You can assign a single macro to each shape.

write a macro

Sub Line_Click()
Dim s as String, ln as Line
s = Application.Caller
set ln = activesheet.Lines(s)
msgbox ln.Name & " over cell " & ln.TopLeftCell.Address
End Sub


--
Regards,
Tom Ogilvy


"Tom Ogilvy" wrote in message
...
SelectionChange is only triggered by changing the cell selection.

Selecting
an object triggers no worksheet event.

--
Regards,
Tom Ogilvy

"Ray Pixley" wrote in message
news:C8%Zf.1683$8g3.680@trnddc02...
That's not what I had in mind. I put your code into the VBA code

associated
with a blank spreadsheet and added the Worksheet_SelectionChange() code

on
the same sheet as follows:

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "targetaddress is " & Target.AddressLocal
End Sub

Then I placed some arrows on the sheet, to provide a shape to select.

When I select a cell, I get the message box stating its address. When I
select a line, nothing happens. Why does one work, and not the other?



"Ken Johnson" wrote in message
oups.com...
Hi Ray,
If a shape is selected then Shape.Name returns its name.
If the selection is a named range then Shape.Name returns the RefersTo
eg "=Sheet1!$A$1"
If the selection is an unnamed range then an error occurs.
So if your sheet has no named ranges you could use something like...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

If there is a named range(s) on the sheet then you might have to test
for the presence of the "=" in the string strSelectedShape...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
If Left(strSelectedShape, 1) < "=" Then
MsgBox strSelectedShape
End If
NONAME:
End Sub

Ken Johnson









  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Shape instead of Target

So if I have 500 lines, I have to write 500 macros? I could, but that
sounds like overkill, and probably won't work. While I thought this info was
unnecessary to answer the question, you are probably assuming the line name
has the string "Line" in them and are sequentially numbered. They don't and
they won't be. Their names will not be predictable when writing the macro.
Consequently, to do as you suggest, I need to have a macro write a macro or
some way of "late-binding" a macro to a shape, which I understand is not
allowed because of virus/trojan concerns. I was hoping there was a simplier
way.

"Tom Ogilvy" wrote in message
...
Your original post wasn't visible when I answered your followup. My
answer
was given from the perspective of selection a shape.

For clicking on a shape:
You can assign a single macro to each shape.

write a macro

Sub Line_Click()
Dim s as String, ln as Line
s = Application.Caller
set ln = activesheet.Lines(s)
msgbox ln.Name & " over cell " & ln.TopLeftCell.Address
End Sub


--
Regards,
Tom Ogilvy


"Tom Ogilvy" wrote in message
...
SelectionChange is only triggered by changing the cell selection.

Selecting
an object triggers no worksheet event.

--
Regards,
Tom Ogilvy

"Ray Pixley" wrote in message
news:C8%Zf.1683$8g3.680@trnddc02...
That's not what I had in mind. I put your code into the VBA code

associated
with a blank spreadsheet and added the Worksheet_SelectionChange() code

on
the same sheet as follows:

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "targetaddress is " & Target.AddressLocal
End Sub

Then I placed some arrows on the sheet, to provide a shape to select.

When I select a cell, I get the message box stating its address. When
I
select a line, nothing happens. Why does one work, and not the other?



"Ken Johnson" wrote in message
oups.com...
Hi Ray,
If a shape is selected then Shape.Name returns its name.
If the selection is a named range then Shape.Name returns the
RefersTo
eg "=Sheet1!$A$1"
If the selection is an unnamed range then an error occurs.
So if your sheet has no named ranges you could use something like...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
MsgBox strSelectedShape
NONAME:
End Sub

If there is a named range(s) on the sheet then you might have to test
for the presence of the "=" in the string strSelectedShape...

Public Sub WhichShape()
Dim strSelectedShape As String
On Error GoTo NONAME
strSelectedShape = Selection.Name
If Left(strSelectedShape, 1) < "=" Then
MsgBox strSelectedShape
End If
NONAME:
End Sub

Ken Johnson









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
Target cell reference moves when target is cut and pasted Illya Teideman Excel Discussion (Misc queries) 5 May 31st 07 11:34 AM
my curser changed from arrow shape to a cross shape???? bj New Users to Excel 1 February 5th 07 02:47 PM
Ranges:Target in Worksheet_SelectionChange(ByVal Target As Range) Kevin McCartney Excel Programming 3 April 15th 05 01:51 PM
How find if target is object in Worksheet_Change (ByVal Target As.. ?) Gunnar Johansson Excel Programming 3 July 1st 04 09:25 PM
Deleting a shape and the cell contents the shape is in. Tom Ogilvy Excel Programming 0 October 9th 03 03:43 AM


All times are GMT +1. The time now is 09:50 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"