Это сводит меня с ума.

Используя 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'd выше - вместо этого я загружаю их из БД. Однако, если я сделаю следующее:

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

Я получаю сообщение о том, что процедура не может быть найдена. Что мне нужно сделать, чтобы иметь возможность вызывать эту функцию module.function из String?

Заранее спасибо!

0
Dave Hammond 2 Янв 2018 в 19:36

2 ответа

Лучший ответ

Правильная версия вашего второго примера:

Application.Run "regCOTSImporter.regressionTestCOTS", foldername

Следовательно, вы можете просто использовать

Application.run test1 & "." test2, foldername

В общем случае, поскольку test1 & "." test2 уже является строкой.

2
bobajob 2 Янв 2018 в 17:29
Application.Run "'" & test1 & "." & test2 & "(""" & FolderName & """)'"

Поставляемая вами строка выглядит так

'regCOTSImporter.regressionTestCOTS("testfname")'

Предполагая, что ваша переменная FolderName установлена на testfname

1
Dick Kusleika 2 Янв 2018 в 17:16