我想使用Excel工具栏中的按钮调用以下子工具,但是当您尝试分配宏时,它不会出现在列表中。我也从一个更大的宏调用它,在这种情况下我不想显示“完成”消息框。因此我有DontShowMsgBox布尔参数。
Sub InteriorDumbCopyExport(DontShowMsgBox as Boolean)
'do stuff...
If DontShowMsgBox Then
MsgBox "Finished."
End If
End Sub
当我添加参数时,我无法再在列表中看到它。有一个简单的方法吗?
我想直接调用sub,因为我必须从形状中调用它,所以不能使用ActiveX按钮。到目前为止,我还没有找到任何搜索内容,但觉得必须有一个解决方案,否则带参数的函数和带参数的子有什么区别?
答案 0 :(得分:4)
只需使用其他sub
:
sub
Sub test() 'call with your button
Call InteriorDumbCopyExport(DontShowMsgBox as Boolean)
End Sub
答案 1 :(得分:4)
你确实可以这样做。在“指定宏”对话框中,只需键入宏的名称和参数,所有这些都用单引号括起来。例如:
'InteriorDumbCopyExport True'
但请注意,如果您的工作簿保存为xlsb文件(我不知道原因),这可能会导致问题。
在这种特殊情况下,我只是将参数设置为可选,并默认为您希望形状使用的值。然后,您只需在“指定宏”对话框中使用宏名称,而无需添加参数。
答案 2 :(得分:0)
另一种方法是了解DontShowMsgBox
的来源。作为一个公共变量,你可以在执行宏之前设置它,然后在没有调用本身参数的情况下直接使用它。
在任何模块中:
Dim DontShowMsgBox As Boolean
如果您只需要它进行调试,那么请将其设为Const
,只有在您需要时才会为真。
答案 3 :(得分:-1)
对于正常行为的FORM控件,因为您无法根据参数分配Sub,因为按钮不知道要移交哪个参数(出于类似的原因,您无法将功能链接到按钮),而ActiveX按钮会在它出现的工作表的代码空间中创建自己的Sub(例如Private Sub CommandButton1_Click()
)。
因此,使用不带参数的Sub来调用按钮,在sub中确定DontShowMsgBox
的实际条件,并调用另一个Sub来完成您为此参数提供的作业。