我有一个工作簿 HasMacros.xlsm 和一个工作簿 HasData.xlsm
在 HasMacros.xlsm 中,我仅使用以下代码添加了一个名为 Mod1 的模块:
Sub testmacro()
MsgBox ("Test")
End Sub
Run Code Online (Sandbox Code Playgroud)
在 HasData.xlsm 中,我仅使用以下代码添加了一个名为 Mod2 的模块:
Sub testmacro2()
'XXX
End Sub
Run Code Online (Sandbox Code Playgroud)
在 Excel 中没有打开任何其他内容。
我想从写入 XXX 的 testmacro2 调用 testmacro。
这失败并立即出现编译错误:
Sub testmacro2()
testmacro()
End Sub
Run Code Online (Sandbox Code Playgroud)
这在执行时因编译错误“未定义函数子集”而失败:
Sub testmacro2()
Call testmacro
End Sub
Run Code Online (Sandbox Code Playgroud)
这失败并立即出现编译错误:
Sub testmacro2()
Mod1.testmacro()
End Sub
Run Code Online (Sandbox Code Playgroud)
这在执行时失败:
Sub testmacro2()
Call Mod1.testmacro
End Sub
Run Code Online (Sandbox Code Playgroud)
我试过如何从 VBA 中的另一个特定工作簿调用函数?但我明白了
名称与现有模块、项目或对象库冲突
如何从 HasData.xlsm 中的 VBA 代码调用 HasMacros.xlsm 中的宏
Application.Run("'工作簿HasMacros.xlsm'!testmacro")
您还可以在改变VBA项目的名称Workbook HasMacros.xlsm比其他的东西VBAProject,然后设置一个引用(工具-在VB编辑器引用)从HasData.xlsm项目该项目。这将允许您直接调用另一个宏而不使用Run.