运行其他模块的VBA模块

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

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

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

这给出了错误:

运行时错误1004 – 不能运行macros“macroname”。 macros可能不在此工作簿中可用或所有macros可能被禁用。

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

只要有问题的macros在同一个工作簿中,并且validation名称存在,就可以通过名称而不是其他模块来调用这些macros。

所以,如果在Module1中有两个macrosMacro1和Macro2,而在Module2中有Macro3和Macro4,那么在另一个macros中可以全部调用它们:

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

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

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

在阅读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