VBA - 如何使用Application.Run中的参数调用模块?

时间:2018-01-02 16:36:35

标签: vba ms-access regression

这让我疯了。

使用VBA Access,我试图为我们正在开发的数据库应用程序设置回归测试套件。我想遍历一个表,并使用Application.Run调用表中列出的每个模块和函数(这样,当开发人员创建新功能时,他们可以创建他们的回归测试模块,并将其列在表中)。

我认为我会用Application.Run来做这件事。

我的代码片段有效:

If folderName <> "" Then
    Dim test1 As String: test1 = "regCOTSImporter"
    Dim test2 As String: test2 = "regressionTestCOTS"

    Application.Run regCOTSImporter.regressionTestCOTS(foldername)
End If

现在,我会假设

Application.Run regCOTSImporter.regressionTestCOTS, foldername

也会起作用,但事实并非如此,因为VBA无法找到声明该参数不是可选的过程(即使Application.Run的文档将其他参数列为参数......)

然而,理想情况下,我希望regCOTSImporter和regressionTestCOTS分别被test1和test2替换,如上面的Dim - 那样我从DB加载它们。但是,如果我执行以下操作:

 Application.run test1 & "." test2 & "(" & foldername & ")"

我收到一条消息,说无法找到该程序。为了能够从String调用此module.function,我需要做什么?

提前致谢!

2 个答案:

答案 0 :(得分:2)

第二个示例的正确版本是

Application.Run "regCOTSImporter.regressionTestCOTS", foldername

因此,您只需使用

即可

Application.run test1 & "." test2, foldername

对于一般情况,因为test1 & "." test2已经是一个字符串。

答案 1 :(得分:1)

Application.Run "'" & test1 & "." & test2 & "(""" & FolderName & """)'"

您提供的字符串如下所示

'regCOTSImporter.regressionTestCOTS("testfname")'

假设您的FolderName变量设置为testfname