Автор Тема: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.  (Прочитано 294 раз)

Оффлайн Rengame113

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

end sub
________________________________________

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

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

Оффлайн Администратор

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

Private A1
Private B1

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

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

Оффлайн Rengame113

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

Оффлайн Администратор

  • Administrator
  • Сообщений: 1574
Макрос 1 и макрос 2 находятся в одном модуле?

Оффлайн Rengame113

  • Посетитель форума
  • Сообщений: 59

Оффлайн Администратор

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

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

Оффлайн Rengame113

  • Посетитель форума
  • Сообщений: 59