Это вопрос о scope .
Если вы хотите, чтобы переменные сохранялись в течение всего времени существования функции, используйте Dim
(сокращение от Dimension ) внутри функции или подпрограммы для объявления переменных:
Function AddSomeNumbers() As Integer
Dim intA As Integer
Dim intB As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are no longer available since the function ended
Глобальная переменная (как указывал SLaks) объявляется вне функции с помощью ключевого слова Public
. Эта переменная будет доступна в течение срока службы вашего запущенного приложения. В случае с Excel это означает, что переменные будут доступны, пока эта конкретная рабочая книга Excel открыта.
Public intA As Integer
Private intB As Integer
Function AddSomeNumbers() As Integer
intA = 2
intB = 3
AddSomeNumbers = intA + intB
End Function
'intA and intB are still both available. However, because intA is public, '
'it can also be referenced from code in other modules. Because intB is private,'
'it will be hidden from other modules.
Вы также можете иметь переменные, которые доступны только в определенном модуле (или классе), объявив их с ключевым словом Private
.
Если вы создаете большое приложение и чувствуете необходимость использовать глобальные переменные, я бы рекомендовал создать отдельный модуль только для ваших глобальных переменных. Это должно помочь вам отслеживать их в одном месте.