从命令按钮传递工作表和按钮对象

时间:2018-05-16 14:32:44

标签: excel vba object button arguments

有没有办法将ActiveSheet对象和对象作为参数传递给工作表上的命令按钮调用的子?

我知道您可以通过以下命令按钮将参数传递给宏:

How to call a macro from a button and pass arguments

但是,当点击Button_1时,如何将以下参数发送给sub? (不使用commandButton_click事件)

参数1:ws作为工作表(包含按下的按钮的工作表) 参数2:按钮作为对象(按下的按钮)

我已经在"分配宏"中尝试了以下内容。按钮的输入框。

' SubToBeCalledByButton(ActiveSheet,this)'

尝试/ u / Nathan_Sav建议调用类似:' SubToBeCalledByButton(activesheet,activesheet.shapes(" Button Name"))'但得到了以下错误:

error

这是我在assign macro中使用的输入:

Assign Macro

以下是按钮调用的子项:

Public Sub DetailButton(ws As Excel.Worksheet, but As Object)

    Debug.Print "ws:" & vbTab & ws.Name
    Debug.Print "but:" & vbTab & but.Name
    Debug.Print "cal:" & vbTab & Application.Caller

End Sub

1 个答案:

答案 0 :(得分:0)

来自Nathan_Sav关于我提问的意见:

不需要将ActiveSheet和CommandButton作为参数发送。

ActiveSheet只需在被调用子中使用ActiveSheet即可获得,因为调用sub的按钮必须位于ActiveSheet上才能被按下。

Button(调用sub的按钮)可以使用Application.Caller

获取