提问人:Catalyst 提问时间:11/15/2023 最后编辑:Catalyst 更新时间:11/15/2023 访问量:52
如何跨多个模块编写动态 MS-Access VBA 函数调用?
How do you write a dynamic MS-Access VBA function call across multiple modules?
问:
我有一个场景,我有多个包含“CreateMember”函数的模块。我有一个 Sub 可以决定调用哪个模块,但是动态调用错误,指出它无法找到 Sub。
我正在运行的线路是
Application.Run (moduleName + ".CreateMember", param1, param2, param3)
moduleName 在调试器中正确解析。我得到“Module1.CreateMember”,但它出错了,
Error 2517, Microsoft Access cannot find the procedure.
现在,如果我将其切换到非动态调用,它确实可以解析并正常工作。
CreateMember 在所有模块中都定义为 Public,因此这不是问题。
我想知道是否不支持合格的动态过程调用?
答:
0赞
Gustav
11/15/2023
#1
除了 Erik A 的建议外,您能得到的最接近的建议是:
Public Function RunCreateMember(ModuleName As String)
Select Case ModuleName
Case "Module1"
Module1.CreateMember
Case "Module2"
Module2.CreateMember
End Select
End Function
评论
1赞
M. Johnstone
11/15/2023
您不是还需要模块的参数吗?
1赞
Gustav
11/15/2023
@M.Johnstone:是的。这只是一个说明方法的scheleton。
评论
Application.Run projectName + ".CreateMember", param1, param2, param3