VBA在有参数时找不到我的宏

时间:2011-03-03 14:14:52

标签: vba office-2010

我正在尝试编写一个宏,该宏将附加到Office 2010后台选项卡中的一系列按钮。根据单击的按钮,应使用不同的参数调用宏。

我遇到的问题是,如果将宏定义为具有参数,则VBA将显示“宏”对话框,未列出任何宏。从声明中删除参数将允许宏运行,但它需要宏才有意义。

正在使用的VBA如下:

Sub NewDocs(docType As String, docTemplate As String)
   Dim sMyShellCommand As String
   sMyShellCommand = "C:\NewDocs.exe " & docType & docTemplate
   WordBasic.Shell (sMyShellCommand)
End Sub

任何想法

3 个答案:

答案 0 :(得分:1)

如果我的问题是对的......

由于对话框中没有用于输入参数的位置,因此不会显示带参数的宏。

如果你想在对话框中看到它们,你可以枚举你需要的那些功能(我希望它不是一个很大的数字)。

例如,

Sub NewDocs1
  Dim docType As String
  Dim docTemplate As String

  docType = "the type you want"
  docTemplate = "the template you want"

  NewDocs docType, docTemplate
End Sub

此外,正如您在问题中所说,您希望在按下按钮时运行宏。然后,不需要在对话框中显示宏(这可以节省您的劳动力)。只需将其与具有正确参数的按钮相关联即可。

答案 1 :(得分:1)

您可以从“宏”对话框传递参数。例如,如果您有此宏

Sub myMacro(n As Long)
    MsgBox n
End Sub

要运行它,请输入

mymacro 1000

...然后按“运行”按钮。

答案 2 :(得分:0)

您无法使用UI组件中的参数调用函数或subs,只需使用不带参数的subs。最好的解决方案是为每个需要关联的按钮创建一个参数自由子,并从每个子内部调用参数化子或函数