【发布时间】:2018-05-16 14:32:43
【问题描述】:
有没有办法将 ActiveSheet 对象和对象作为参数传递给工作表上的命令按钮调用的 sub?
我知道您可以通过以下命令按钮将参数传递给宏:
How to call a macro from a button and pass arguments
但是,当单击 Button_1 时,您将如何将以下参数发送给 sub? (不使用 commandButton_click 事件)
参数 1:ws as worksheet(包含被按下按钮的工作表) 参数2:按钮作为对象(被按下的按钮)
我在按钮的“分配宏”输入框中尝试了以下操作。
'SubToBeCalledByButton(ActiveSheet, this)'
尝试 /u/Nathan_Sav 建议拨打电话,例如:'SubToBeCalledByButton(activesheet, activesheet.shapes("Button Name"))' 但收到以下错误:
这是我在分配宏中使用的输入:
这里是按钮调用的 sub:
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
【问题讨论】:
-
public sub somesub(ws as excel.worksheet, objCommandButton as CommandButton)像这样调用somesub(activesheet,activesheet.shapes("commandbutton1")沿着这些思路,application.caller也可以帮助你,不需要调用按钮参数 -
试过你的电话,请查看编辑后的帖子,出现错误。如果我在另一个子程序中调用子程序,你写的内容会起作用,但我试图通过将子程序分配为按钮的宏来从命令按钮调用子程序
-
使用 Nathan_Sav 的建议解决了我自己对该功能的需求,即在按钮调用的子中使用
Application.Caller,并在同一个子中使用activesheet。但是,关于如何将这些作为参数传递给工作表上的按钮调用的宏,我的问题尚未得到解答。 -
那你的逻辑是什么?无论子是什么,当调用 Activesheet 时将是活动表,也不需要通过.....只需分配 MyMacro 然后 activesheet 将是您想要的那个..
标签: excel vba object button arguments