Это сводит меня с ума.
Используя 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?
Заранее спасибо!
2 ответа
Правильная версия вашего второго примера:
Application.Run "regCOTSImporter.regressionTestCOTS", foldername
Следовательно, вы можете просто использовать
Application.run test1 & "." test2, foldername
В общем случае, поскольку test1 & "." test2
уже является строкой.
Application.Run "'" & test1 & "." & test2 & "(""" & FolderName & """)'"
Поставляемая вами строка выглядит так
'regCOTSImporter.regressionTestCOTS("testfname")'
Предполагая, что ваша переменная FolderName
установлена на testfname
Похожие вопросы
Новые вопросы
vba
Visual Basic для приложений (VBA) - это управляемый событиями объектно-ориентированный язык программирования для написания макросов, используемый для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос конкретно касается программирования любого приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook] или [ms-project].