Можно ли создавать универсальные переменные в VBA, чтобы все функции могли их использовать?
Да, хотя вам необходимо объявить область действия, как указано в mwolf02. Однако , что вы не можете сделать в VBA, это заполнить их вне вызова функции или процедуры, как вы можете это сделать с VBScript.
Кроме того, если вам действительно нужны глобальные переменные, вы должны получить схему именования, которая отличает глобальные переменные от локально объявленных переменных (например, префикс их с g_
). Вы можете получить этот запутанный сценарий:
Public testVariable as String
Public Sub Main()
Call Foo()
Call Bar()
End Sub
Public Sub Foo()
testVariable = "Foo"
End Sub
Public Sub Bar()
Dim testVariable As String
testVariable = "Bar"
End Sub
Значение testVariable
будет равно "Foo", хотя Bar
было вызвано позже. Фактически, нет никакого способа ссылаться на глобальную переменную testVariable
изнутри Bar, так как она объявила локальную переменную с тем же именем.