Veg*_*ard 13
接受参数的宏在宏框中不可见,因为将它们放在那里是没有意义的.如果他们需要运行参数,则无法从宏框中运行它们,因为无法为相关宏提供参数.
通常,当您显示"宏"对话框(按Alt + F8)时,宏将显示在宏列表中,除非满足以下三个条件之一:
宏是一个功能.函数通常返回信息,并且需要将信息传递给它们.由于从宏列表运行宏不允许这些事情发生,Excel表示不需要列出它.用户定义的函数在Excel中非常有用,它们不会显示在"宏"对话框中,因为它们毕竟是函数.
宏是一个带参数的子程序.Excel假定由于参数是必需的,并且您无法通过从宏列表中选择子例程来提供参数,因此无需列出参数.
子例程已声明为Private.这意味着子例程仅对声明它的模块中的代码有用.
来源.
根据您的需要,可能的解决方法是使用如下的helper-sub:
Sub InvisibleMacro(strArg As String)
MsgBox("The passed argument was " & strArg)
' This macro won't be visible in the macro dialog because it can only be called with an argument
End Sub
Sub VisibleMacro()
Call InvisibleMacro("Abc")
' This macro will be visible in the macro dialog because it requires no arguments and is not private.
' It will call the "invisible" macro with a preset argument.
End Sub
Run Code Online (Sandbox Code Playgroud)
InputBox如果您需要传递的参数是非静态的,您可以使用或喜欢.当然,根据您需要传递的数据类型作为参数,此方法可能会受到限制和/或需要一些额外的环节.