从宏内部调用宏-错误编译错误:预期的变量或过程,而不是模块-私有子应用[重复]

问题描述 投票:2回答:1

此问题已经在这里有了答案:

我一直在复制代码,以便在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

如何在此私人子应用程序内调用另一个宏*?

vba ms-office word-vba word-2013
1个回答
1
投票

虽然这篇文章之前已经讲过,但如果其他人落在这里,我也会在这里分享答案。

问题是,您不能拥有与子名称相同的模块。请参阅下面的屏幕截图了解错误!

enter image description here

有趣的是,如果您将调用另一个子代码的子代码(问候语)放在同一模块(问候语)中,它将起作用!但是我会说这是不好的做法,应该避免。请参见下面的示例:

enter image description here

我通常将_Sub附加到我的模块名称上,以避免出现如下所示的问题:

enter image description here

还有关于使用关键字Call的注意事项。

在调用过程时,不需要使用Call关键字。但是,如果您使用Call关键字来调用需要自变量,自变量列表必须用括号括起来。如果你省略Call关键字,还必须省略括号参数列表。如果您使用Call语法调用任何内在函数或用户定义的函数,该函数的返回值将被丢弃。

查看更多信息-> What does the Call keyword do in VB6?

© www.soinside.com 2019 - 2024. All rights reserved.