代码之家  ›  专栏  ›  技术社区  ›  Dave Hammond

VBA-如何使用应用程序中的参数调用模块。跑

  •  0
  • Dave Hammond  · 技术社区  · 7 年前

    这快把我逼疯了。

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

    我假设我会对应用程序执行此操作。跑

    我拥有的代码片段有效:

    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替代,如上所述——这样我就可以从DB加载它们。但是,如果我执行以下操作:

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

    我收到一条消息,说找不到程序。我需要做什么才能调用此模块。字符串中的函数?

    提前感谢!

    2 回复  |  直到 7 年前
        1
  •  2
  •   bobajob    7 年前

    第二个示例的正确版本是

    Application.Run "regCOTSImporter.regressionTestCOTS", foldername

    因此,您可以简单地使用

    Application.run test1 & "." test2, foldername

    对于一般情况,如 test1 & "." test2 已是字符串。

        2
  •  1
  •   Dick Kusleika    7 年前
    Application.Run "'" & test1 & "." & test2 & "(""" & FolderName & """)'"
    

    您提供的字符串如下所示

    'regCOTSImporter.regressionTestCOTS("testfname")'
    

    假设您的 FolderName 变量设置为 testfname