0

我正在尝试编写一个将附加到 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

有任何想法吗

4

3 回答 3

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

此外,正如您在问题中所说,您希望宏在按下按钮时运行。那么就不需要让宏在对话框中可见了(这样可以节省你的劳动)。只需将其与具有正确参数的按钮相关联。

于 2011-03-03T14:20:41.700 回答
1

您可以从宏对话框传递参数。例如,如果你有这个宏

Sub myMacro(n As Long)
    MsgBox n
End Sub

要运行它,请输入

mymacro 1000

...然后按运行按钮。

于 2011-05-29T22:43:38.627 回答
0

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

于 2011-03-04T16:24:43.327 回答