首页 > 解决方案 > 从命令按钮传递工作表和按钮对象

问题描述

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

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

如何从按钮调用宏并传递参数

但是,当单击 Button_1 时,您如何将以下参数发送给子对象?(不使用 commandButton_click 事件)

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

我在按钮的“分配宏”输入框中尝试了以下操作。

'SubToBeCalledByButton(ActiveSheet,这个)'


尝试 /u/Nathan_Sav 建议拨打电话:'SubToBeCalledByButton(activesheet, activesheet.shapes("Button Name"))' 但出现以下错误:

错误

这是我在分配宏中使用的输入:

分配宏

这是按钮调用的子程序:

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

标签: excelvbaobjectbuttonarguments

解决方案


来自 Nathan_Sav 对我的问题的评论:

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

ActiveSheet可以通过ActiveSheet在被调用的 sub 中使用来获得,因为调用 sub 的按钮必须在 ActiveSheet 上才能被按下。

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


推荐阅读