Как объявить переменную 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 (базы данных) может быть проблематичным.

Другие вопросы по тегам