vba – Application.run不适用于模块

我有两个模块.在一个模块中,我想间接地从另一个模块运行一个子模块.根据MS和众多在线资源,这应该有效 – 但事实并非如此.可能是什么问题呢?

'Module: "Helpers"

Public Sub ubTest()
  MsgBox "ubTest is called"
End Sub


'Another Module -> I also tried this from a form and a class...

Public Sub test()
  Dim s As String
  Helpers.ubTest             'works

  s = "ubTest"
  Application.Run s        'works

  s = "Helpers.ubTest"
  Application.Run s        'doesn't work

End Sub

(显然这是一个测试 – 在实际应用程序中,我将有多个模块,并且不会总是控制过程名称 – 所以我必须使用模块前缀)

我尝试/反编译并压缩数据库 – 也没有运气.

最佳答案 Access Application.Run方法帮助主题说明了有关Name参数的信息:

‘如果您正在调用另一个数据库中的过程,请使用项目名称和过程名称,并在表单中用点分隔:“projectname.procedurename”.

所以我认为当你提供“modulename.procedurename”(即“Helpers.ubTest”)时,Access认为你的modulename是VBA项目的名称.由于它找不到名为Helpers的项目,因此抛出错误#2517,“…找不到程序’Helpers.ubTest.’”

不幸的是,我找不到用Application.Run做我认为你想要的方法.我希望“projectname.modulename.procedurename”可以工作,但这也引发了2517错误.

点赞