Глобальная переменная в проекте VBA Excel. Объявление глобальной переменной в модуле проекта VBA и обращение к ней из других модулей того же проекта.
Объявление глобальной переменной
Чтобы переменная стала глобальной, она должна быть объявлена в начале модуля перед первой процедурой (раздел Declarations) с помощью оператора Public. Этот способ работает во всех модулях проекта VBA Excel.
Допускается объявление глобальной переменной с помощью оператора Global, но такой способ считается устаревшим и на сайте разработчиков уже не упоминается. Объявить глобальную переменную с оператором Global можно только в стандартном модуле.
Пример объявления глобальных переменных в любом модуле проекта VBA:
1 2 3 |
Public myGlobVar1 'по умолчанию - As Variant Public myGlobVar2 As String Public myGlobVar3 As Double |
Обращение к глобальной переменной
Примеры обращения к глобальной переменной, объявленной в разных типах модулей проекта VBA Excel. Актуально для обращения из модуля любого типа данного проекта.
Переменная в стандартном модуле
Если глобальная переменная (myGlobVar) объявлена в стандартном модуле (Module1) с уникальным именем, не повторяющимся в других модулях, к ней можно обращаться из других модулей по одному имени (в примере — из модуля формы):
1 2 3 4 |
Private Sub CommandButton1_Click() myGlobVar = "Глобальная переменная" TextBox1.Text = myGlobVar End Sub |
Стандартное обращение с указанием имени модуля (Module1), в котором объявлена глобальная переменная (myGlobVar):
1 2 3 4 |
Private Sub CommandButton1_Click() Module1.myGlobVar = "Глобальная переменная" TextBox1.Text = Module1.myGlobVar End Sub |
Переменная в модуле книги
Глобальная переменная (myGlobVar), объявленная в модуле книги, доступна при обращении к ней из других модулей с помощью следующего кода VBA Excel:
1 2 3 4 |
Sub Primer1() ThisWorkbook.myGlobVar = "Глобальная переменная" MsgBox ThisWorkbook.myGlobVar End Sub |
Переменная в модуле листа
Обращение к глобальной переменной (myGlobVar), объявленной в модуле рабочего листа (Лист1), из других модулей по имени листа (в проводнике проекта находится без скобок слева от имени ярлыка):
1 2 3 4 |
Sub Primer2() Лист1.myGlobVar = "Глобальная переменная" MsgBox Лист1.myGlobVar End Sub |
По имени ярлыка (в проводнике проекта находится в полукруглых скобках справа от имени листа):
1 2 3 4 |
Sub Primer3() Worksheets("Лист1").myGlobVar = "Глобальная переменная" MsgBox Worksheets("Лист1").myGlobVar End Sub |
Переменная в модуле формы
Глобальная переменная (myGlobVar), объявленная в модуле формы (UserForm1), доступна при обращении к ней из других модулей с помощью следующего кода VBA Excel:
1 2 3 4 |
Sub Primer4() UserForm1.myGlobVar = "Глобальная переменная" MsgBox UserForm1.myGlobVar End Sub |
Переменная в личной книге макросов
Обращение к глобальной переменной (myGlobVar), объявленной в модуле ЭтаКнига
проекта VBAProject (PERSONAL.XLSB)
из модуля проекта VBA обычной книги Excel:
1 2 3 4 |
Sub Primer5() Workbooks("PERSONAL.XLSB").myGlobVar = "Глобальная переменная" MsgBox Workbooks("PERSONAL.XLSB").myGlobVar End Sub |
Мне не удалось получить доступ из проекта VBA текущей книги Excel к глобальной переменной, объявленной в стандартном модуле личной книги макросов.