从 VBA 中的不同模块调用子例程
Posted
技术标签:
【中文标题】从 VBA 中的不同模块调用子例程【英文标题】:Call a Subroutine from a different Module in VBA 【发布时间】:2011-02-17 18:14:36 【问题描述】:是否可以从一个Module
调用一个函数到另一个?
我有以下代码:
Sub MAIN()
Call IDLE
End Sub
MAIN
位于Module1
IDLE
位于Module2
并定义为:Sub IDLE()
【问题讨论】:
【参考方案1】:使用 Module2 为调用添加前缀(例如 Module2.IDLE
)。既然你问了这个问题,我假设你在项目中多次定义了 IDLE,否则这不应该是必要的。
【讨论】:
不客气。请不要忘记接受答案(单击检查):)。 如果需要在模块名前加上前缀,那就有问题了。应该没有必要。 @Remou - 你错了。首先,OP已经说它解决了他的问题,不知道为什么这对你来说还不够。其次,您可以自己尝试,创建 Module1 和 Module2 并在每个模块中创建一个名为 Sub1 的子程序。然后在从 Sheet1 中的子例程调用 Sub1 名称时尝试从 Sub1 名称中去掉 Module1 或 Module2,并让我知道当您尝试从 VBA 菜单栏调试->编译时会发生什么。 如果你创建了两个同名的程序,项目将无法编译,应该纠正错误。 OP 提到了两个过程,一个称为 Main,一个称为 Idle。如果这是两个标准模块,应该可以从 Main 调用 Idle,甚至从即时窗口调用,而不用任何前缀。如果不是,则信息缺失且问题不完整。重要的是,答案应该对希望找到答案的其他人有效。 @Remou - 对,如果你在调用前加上 module1 或 module2,这个错误就会消失,这就是我要说的重点。但是您说“如果您创建两个同名的程序,则项目将无法编译”,这是不正确的。您可以拥有 2 个具有相同名称的子程序,只是在调用子程序时您必须使用正确的模块作为前缀。有意义吗?以上是关于从 VBA 中的不同模块调用子例程的主要内容,如果未能解决你的问题,请参考以下文章