Actually, I had the code backwards:
Option Explicit
Declare Function GetKeyState32 Lib "user32" Alias _
"GetKeyState" (ByVal vKey As Integer) As Integer
Sub testme()
Dim myShape As Shape
If GetKeyState32(16) < 0 Then
Set myShape = ActiveSheet.Shapes(Application.Caller)
MsgBox myShape.TopLeftCell.Address
Else
Exit Sub
End If
End Sub
But I didn't have to reset any keys to make it not work if the shift key were
not held.
Any chance your shiftkey is sticking????
I used xl2002 and win98 and it worked fine.
Sheldon wrote:
Almost what I want. One I press the shift key and click on the shape, the
assigned macro does run correctly. However, the next time I click the shape,
I don't need to depress the shift key. The macro still runs. It should not.
I need a way, in code, to reset the shift key. If the user hits the shift
key, and then later clicks on the shape, the macro does not run (correct)
because the shift was not depressed at the same time the shape was clicked.
I hope that explains what I need.
"Dave Peterson" wrote:
This worked ok for me--it stopped it each time the shift key was held (is that
what you wanted?):
Option Explicit
Declare Function GetKeyState32 Lib "user32" Alias _
"GetKeyState" (ByVal vKey As Integer) As Integer
Sub testme()
Dim myShape As Shape
If GetKeyState32(16) < 0 Then
MsgBox "not this time buddy!"
Exit Sub
End If
Set myShape = ActiveSheet.Shapes(Application.Caller)
MsgBox myShape.TopLeftCell.Address
End Sub
Sheldon wrote:
Well, I figured out that I can use GetKeyState. All I need now is to reset
the KetState. In other words, the first time the macro works correctly. But
after that, the macro runs whether the shift key is pressed or not.
So How do I reset?
Thanks
"Sheldon" wrote:
In a worksheet I have a drawing object (rectangle) tied to macro. I want to
macro to run ONLY if the SHIFT key is pressed and the drawing object is
clicked. How can I do this?
Thanks
--
Dave Peterson
--
Dave Peterson