Как объявить переменную extern в VBA?
В C переменные отмечены extern
должны быть объявлены только локально, но могут быть определены внешне. Это возможно с VBA? Таким образом, я после примерно так:
DataSource_14.accdb:
' References CommonFunctions.accdb
Public SOURCE_ID As Long = 14
Public Sub Baz()
Foo
Bar
End Sub
CommonFunctions.accdb:
Extern SOURCE_ID As Long ' <- what's the proper way to declare this?
Public Sub Foo()
Debug.Print "Doing Foo stuff with source " & SOURCE_ID
End Sub
Public Sub Bar()
Debug.Print "Doing Bar stuff with source " & SOURCE_ID
End Sub
1 ответ
Если вы перейдете в Инструменты / Ссылки в VBA, вы можете добавить ссылку на другую базу данных. Тогда вы можете использовать:
Application.Run "projectname.procedurename"
(возвращаемое значение Variant
)
Имя проекта по умолчанию соответствует имени базы данных, но может быть изменено в редакторе VB (Инструменты, Свойства VBAProject).
Однако это не приведет к получению публичной переменной. Эта переменная должна быть возвращена процедурой Function.
В качестве альтернативы другой базой данных может быть база данных библиотеки (или надстройка). Смотрите здесь и здесь.
Я полагаю, что можно было бы вернуть переменную, создав базу данных библиотеки и используя класс в этой базе данных, чтобы открыть поле (свойство) класса. Но создать процедуру Function намного проще.
Однако, если это возможно, гораздо проще создать Модуль, содержащий полезные функции и скопировать его между базами данных. Я считаю, что создание и использование надстроек Access (базы данных) может быть проблематичным.