VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.

Автор Rengame113, 26 июня 2018, 20:00

Rengame113

Возможно объявление глобальной переменной в Word, что бы она была доступна в одном модуле?
Например
Спойлер
sub M1
    Объявление глобальной переменной А1
    Объявление глобальной переменной В1

end sub
________________________________________

sub M2
    MsgBox "А1"  ' Вызов глобальной переменной А1
   
end sub
_________________________________________

sub M2
    MsgBox "B1"  ' Вызов глобальной переменной B1
   
end sub
[свернуть]

Администратор

Да, в VBA можно создать глобальную переменную, которая будет видна только в одном модуле. Для этого надо создать переменную в самом верху модуля, не внутри процедуры. И нужно указать слово "Private":

Private A1
Private B1

Sub макрос()
    A1 = "это переменная A1"
    B1 = "это переменная B1"
    Debug.Print A1
    Debug.Print B1
End Sub

PS. Вместо слова "Private" можно использовать слово "Dim". Но в этом случае тяжелее читать код, т.к. надо вспоминать, видна эта переменная внутри модуля или видна во всём проекте. Тяжело будет вспомнить, т.к. вы каждый день не будете создавать глобальные переменные и со временем начнёте забывать детали. А слова "private" чётко даёт понять, что из себя представляет переменная.

Rengame113

Понятно.
Возможно, чтобы переменная А1 получила данные в Макрос_1, а потом использовала бы эти данные в макрос_2 и т.п.?

Администратор



Администратор

В макросе 1 запишите данные в глобальную переменную. Затем в макросе 2 прочитайте данные из глобальной переменной.

PS. В вашем случае удобнее использовать термин "модульная переменная", а не "глобальная". Тау удобнее обсуждать.