Франк Левек предоставил ясную и простую демонстрацию различия между локальными и глобальными объявлениями.
Однако, как и большинство языков, VBA позволяет передавать параметры подпрограммам.Иногда глобальная переменная является единственным выбором или единственным разумным выбором.Но обычно лучше объявить myVar
в пределах try
и передать его в качестве параметра displayVar
.Это предотвращает случайное изменение displayVar
на *1006*, так как по умолчанию параметры передаются как значения.Если вы хотите, чтобы подпрограмма изменила значение параметра, вы должны явно передать параметр в качестве ссылки.Это верно для большинства современных языков программирования.
Обратите также внимание, что Public
означает, что эти подпрограммы видны подпрограммам в других модулях.Если Public
был опущен или заменен на Private
, try
и displayVar
были бы видны только внутри их модуля.
В приведенном ниже коде я передал значение myVar
в качестве параметрадо displayVar
.
Public Sub try()
Dim myVar As String
myvar = "hello world"
Call displayVar(myVar)
End Sub
Public Sub displayVar(Stg As String)
Call Msgbox(Stg, VBOKOnly)
End Sub