此问题已经在这里有了答案:
我一直在复制代码,以便在Word中进行工作并学习宏。我可以在打印前显示MsgBox的地方工作,但我希望它调用另一个模块/宏以分隔模块。
对于测试,这有效:
Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
MsgBox "Before Print"
End Sub
但是如果我这样做:
Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
Call Greeting
End Sub
这是我拥有的一个工作宏,只需打开一个MsgBox并说“ Greetings”,就会出现以下错误:
Compile Error: Expected variable or procedure, not module
如何在此私人子应用程序内调用另一个宏*?
虽然这篇文章之前已经讲过,但如果其他人落在这里,我也会在这里分享答案。
问题是,您不能拥有与子名称相同的模块。请参阅下面的屏幕截图了解错误!
有趣的是,如果您将调用另一个子代码的子代码(问候语)放在同一模块(问候语)中,它将起作用!但是我会说这是不好的做法,应该避免。请参见下面的示例:
我通常将_Sub
附加到我的模块名称上,以避免出现如下所示的问题:
还有关于使用关键字Call
的注意事项。
在调用过程时,不需要使用Call关键字。但是,如果您使用Call关键字来调用需要自变量,自变量列表必须用括号括起来。如果你省略Call关键字,还必须省略括号参数列表。如果您使用Call语法调用任何内在函数或用户定义的函数,该函数的返回值将被丢弃。