Форум по VBA, Excel и Word

Word => Макросы в Word => Тема начата: Rengame113 от 26 июня 2018, 20:00

Название: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Rengame113 от 26 июня 2018, 20:00
Возможно объявление глобальной переменной в Word, что бы она была доступна в одном модуле?
Например
Спойлер
sub M1
    Объявление глобальной переменной А1
    Объявление глобальной переменной В1

end sub
________________________________________

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

sub M2
    MsgBox "B1"  ' Вызов глобальной переменной B1
   
end sub
[свернуть]
Название: Re: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Администратор от 26 июня 2018, 20:27
Да, в VBA можно создать глобальную переменную, которая будет видна только в одном модуле. Для этого надо создать переменную в самом верху модуля, не внутри процедуры. И нужно указать слово "Private":

Private A1
Private B1

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

PS. Вместо слова "Private" можно использовать слово "Dim". Но в этом случае тяжелее читать код, т.к. надо вспоминать, видна эта переменная внутри модуля или видна во всём проекте. Тяжело будет вспомнить, т.к. вы каждый день не будете создавать глобальные переменные и со временем начнёте забывать детали. А слова "private" чётко даёт понять, что из себя представляет переменная.
Название: Re: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Rengame113 от 27 июня 2018, 11:26
Понятно.
Возможно, чтобы переменная А1 получила данные в Макрос_1, а потом использовала бы эти данные в макрос_2 и т.п.?
Название: Re: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Администратор от 27 июня 2018, 11:37
Макрос 1 и макрос 2 находятся в одном модуле?
Название: Re: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Rengame113 от 27 июня 2018, 11:39
да
Название: Re: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Администратор от 27 июня 2018, 11:46
В макросе 1 запишите данные в глобальную переменную. Затем в макросе 2 прочитайте данные из глобальной переменной.

PS. В вашем случае удобнее использовать термин "модульная переменная", а не "глобальная". Тау удобнее обсуждать.
Название: Re: VBA Макросы: Объявление глобальной переменной в Word, которая доступна в одном модуле.
Отправлено: Rengame113 от 27 июня 2018, 12:14
Спасибо.