Vba 从宏内部调用宏-错误编译错误:应为变量或过程,而不是模块-专用子应用
我一直在复制代码moslty的工作和学习宏的字。我已经让它在打印前显示MsgBox,但我希望它调用另一个模块/宏来划分模块 对于测试,这是有效的:Vba 从宏内部调用宏-错误编译错误:应为变量或过程,而不是模块-专用子应用,vba,ms-office,ms-word,word-2013,Vba,Ms Office,Ms Word,Word 2013,我一直在复制代码moslty的工作和学习宏的字。我已经让它在打印前显示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,
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并说“问候”,我得到以下错误:
Compile Error: Expected variable or procedure, not module
我如何调用这个私有子应用程序中的另一个宏*?虽然这篇文章之前已经讨论过,但我将在这里分享答案,以防其他人在这里登陆 问题是,您不能将模块命名为与子模块相同的模块。请参见下面的屏幕截图,了解问题所在 有趣的是,如果您将调用另一个子模块(问候语)的子模块放在同一个模块(问候语)中,它就会工作!但我认为这是一种不好的做法,应该避免。见下例: 我通常只会在模块名称后附加
\u Sub
,以避免出现如下问题:
还有一个关于使用关键字Call
的说明
调用过程时不需要使用Call关键字。
但是,如果使用Call关键字调用需要
参数、argumentlist必须用括号括起来。如果你忽略了
对于Call关键字,还必须省略括号
论点列表。如果使用调用语法调用任何内在函数或
如果是用户定义的函数,则该函数的返回值将被丢弃
请参阅此处了解更多信息-->说实话。我修改了一篇被删除的帖子,希望能让自己摆脱提问禁令,并发布了我问题的解决方案。希望屏幕截图能帮助其他人理解这个问题。似乎使用Call这个词会让你的Q被误解。如果你编辑Q来明确你的意思(包括你的模块和函数名称相同),我会考虑重新开放。