我正在尝试编写一个宏,该宏将附加到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
任何想法
答案 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。最好的解决方案是为每个需要关联的按钮创建一个参数自由子,并从每个子内部调用参数化子或函数