2011-03-03 27 views
0

我想写一个宏将附加到Office 2010后台选项卡中的一系列按钮。根据点击的按钮,宏应该用不同的参数调用。VBA无法找到我的宏时,它有参数

我遇到的问题是,如果宏定义为具有参数,那么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 

任何想法

回答

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 

此外,当你在提问时说,你想要的时候按下了按钮来运行宏。然后,不需要在对话框中显示宏(这可以节省您的人力)。只需使用正确的参数将其与按钮相关联即可。

+0

这是有道理的。将测试,并可能有一个后续问题... – 2011-03-03 16:09:28

0

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

1

您可以从宏对话框传递参数。举例来说,如果你有这样的宏观

Sub myMacro(n As Long) 
    MsgBox n 
End Sub 

要运行它,进入

mymacro 1000 

...,然后按运行按钮。

+0

如何让宏在宏对话框中,请告诉我如何传递参数。 – 2013-04-16 05:26:45

相关问题