运行其他模块的VBA模块

时间:2012-03-28 13:47:50

标签: excel vba excel-vba call

我正在使用Microsoft VBA进行编程。首先,我需要在宏的帮助下生成一个QueryTable(我已经得到了代码),然后在宏的帮助下,我需要应用使用QueryTable中数据的公式。我面临的问题是QueryTable只出现在其代码已经完成工作的Sub之后。这意味着我不能包含生成公式的代码,因为没有数据可以生成公式。

现在的想法是编写一个运行其他模块的模块:

Sub moduleController()
    Run "Module1"
    Run "Module2"
End Sub

这给出了错误:

  

运行时错误1004 - 无法运行宏“macroname”。宏可能在此工作簿中不可用,或者可能禁用所有宏。

可能是什么解决方案?也许我的QueryTable加载问题还有另一种解决方案吗?

3 个答案:

答案 0 :(得分:17)

只要有问题的宏位于同一工作簿中并验证名称是否存在,就可以按名称而不是模块从任何其他模块调用这些宏。

因此,如果在Module1中有两个宏Macro1和Macro2,而在Module2中你有Macro3和Macro4,那么在另一个宏中你可以全部调用它们:

Sub MasterMacro()
    Call Macro1
    Call Macro2
    Call Macro3
    Call Macro4
End Sub

答案 1 :(得分:3)

“Module1”是否包含“moduleController”的同一工作簿? 如果没有,您可以使用Application.Run someWorkbook.xlsm!methodOfModule调用公共方法“Module1”。

答案 2 :(得分:1)

感谢Artiso,我刚学到了新东西。我在属性框中为每个模块命名。这些名字也是我在模块中声明的名称。当我试图调用我的第二个模块时,我一直收到错误:编译错误:预期的变量或过程,而不是模块

在阅读上面关于不具有相同名称的Artiso评论之后,我重命名了我的第二个模块,从第一个模块开始调用,问题解决了。有趣的东西!感谢Artiso!

的信息

如果我的经历不清楚:

模块名称:AllFSGroupsCY Public Sub AllFSGroupsCY()

模块名称:AllFSGroupsPY Public Sub AllFSGroupsPY()

来自AllFSGroupsCY()

Public Sub FSGroupsCY()

    AllFSGroupsPY 'will error each time until the properties name is changed

End Sub