vba button - find which was clicked vba button - find which was clicked vba vba

vba button - find which was clicked


I always write wrappers for each button that then call the macro in question.

Like so:

Public Sub StoreButton_Click()  Call StoreTransValues(ActiveSheet)End Sub

If you have only one button for any one page, you can just get the ActiveSheet property, and it will be the button on that page.


Edit:

Here's the code to get and use the name of the calling button:

Dim ButtonText As StringButtonText = Application.CallerActiveSheet.Shapes(ButtonText).Delete

You would use the .Move method to move the button.


I finally found the solution for determining which button in a Worksheet was pushed. Credit is due to Derk at http://www.ozgrid.com/forum/showthread.php?t=33351.

My final example code:

Sub HereIAm()    Dim b As Object    Dim cs, rs As Integer    Dim ss, ssv As String    Set b = ActiveSheet.Buttons(Application.Caller)    With b.TopLeftCell        rs = .Row        cs = .Column    End With    ss = Left(Cells(1, cs).Address(False, False), 1 - (ColNumber > 26)) & rs    ssv = Range(ss).Value    MsgBox "Row Number " & rs & "    Column Number " & cs & vbNewLine & _        "Cell " & ss & "   Content " & ssvEnd Sub

If you don't need the cells label, Cells(rs,cs).Value works as well.


Dim button as a string:    button = ActiveSheet.Shapes(Application.Caller).Name