【问题标题】:Call a Subroutine from a different Module in VBA从 VBA 中的不同模块调用子例程
【发布时间】:2011-02-17 18:14:36
【问题描述】:

是否可以从一个Module 调用一个函数到另一个?

我有以下代码:

Sub MAIN()
    Call IDLE
End Sub
  • MAIN 位于Module1
  • IDLE 位于Module2 并定义为:Sub IDLE()

【问题讨论】:

    标签: vba module call


    【解决方案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 个具有相同名称的子程序,只是在调用子程序时您必须使用正确的模块作为前缀。有意义吗?
    猜你喜欢
    • 2016-05-29
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多