【发布时间】:2015-10-06 13:36:46
【问题描述】:
我正在尝试为每个循环执行一个检查活动工作表中的每个按钮的循环,以查看该按钮是否包含某个宏。如果为按钮分配了正确的宏,那么我希望按钮调用 sub,然后转到下一个按钮。
这就是我的想象:
Sub ExecuteAllButtonsContainingX()
Dim Btn As Button
Dim Btn_count As Integer
Btn_count = 1
For Each Btn In Application.Workbooks.ActiveSheet.Buttons
Btn(Btn_count).Select
If ***[The selected button contains Macro X]*** Then
***[Call the macro that is assigned to the selected button as if the button was clicked on]***
Else
End If
Btn_count = Btn_count + 1
Next Btn
End Sub
我没有得到的是
i) 如何检查按钮是否分配了某个宏,以及
ii) 从所选按钮调用宏
【问题讨论】:
-
宏是否取决于单击它的按钮 - 即它使用
Application.Caller吗?如果是这样,我认为你不能。如果没有,你已经有两个很好的答案了。 :) -
是的,它确实取决于单击哪个按钮并且它使用 application.caller :(
-
我认为您必须重写被调用的宏(如果可以的话),以便它接受一个可选的 Variant 参数,您可以向该参数传递一个按钮。然后它可以测试它是否丢失(直接从按钮调用时)或接受按钮而不是使用
Application.Caller。 -
当我想到它时,结合 ChrisUnbroker 的答案,这将是关键。如何使用可选的 Variant 参数来传递按钮?
-
查看我刚刚发布的答案。