【发布时间】:2016-04-19 10:16:45
【问题描述】:
当您在 VBA 中编写程序时,它会出现在宏列表中,以便用户可以运行它。如果您向所述子添加参数,它当然会从列表中消失。
但是,当我将参数设置为可选参数并使用默认值时,它仍然不会显示在那里。有可能做到吗,想想?
Sub runsomething(Optional ByVal sheetname As String = "setup")
【问题讨论】:
-
没有。您将需要一个额外的不带参数的调用子程序来简单地调用您的主例程。 (注意:您仍然可以通过键入其名称从宏对话框中运行例程,但它不会出现在列表中。)
-
@Rory:我的答案在我的 Excel 2013 中有效
-
显然可以!不知道! — 谢谢!
-
@user3598756 是的 - 抱歉。只要您使用 Variant 并且不提供默认值在声明中,它就可以工作。
-
@Rory:是的,这正是我提出的。作为进一步的改进,如果 OP 需要一个字符串类型的变量,那么他可以声明一些
dim sheetnameStr as string并继续使用If IsMissing(sheetname) Then sheetnameStr = "setup" : Else : sheetnameStr =CStr(sheetname)