宏没有出现在宏表中

RFi*_*kes 4 excel vba excel-vba

我正在excel 2016中编写VBA宏.我编写的宏中有参数没有显示在宏表中,只显示没有参数的宏.救命.

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如果您需要传递的参数是非静态的,您可以使用或喜欢.当然,根据您需要传递的数据类型作为参数,此方法可能会受到限制和/或需要一些额外的环节.


小智 -2

您可能已将宏制作为“Function()”。要使其在宏列表中可见,您必须将其声明为“Sub()”。