Пример 19.11
Разрешенное имя переменной | Неразрешенное имя переменной | Комментарий |
ПРИмер; приМЕР; EXAMPLE; example | Нет различия прописных и строчных букв, кириллицы и латиницы в написании имен | |
Тарифная_ставка_1_разряда; Tax_off_l_class | Для улучшения семантики переменные могут состоять из отдельных слов, соединенных знаком _ | |
Тарифная ставка $; #room; Class&subclass | Нельзя использовать пробелы в имени переменной, а также специальные символы типа: #$%&! |
Программа на языке VBA имеет модульную структуру – главный модуль, в составе которого вложенные модули, содержащие одну или более вложенных процедур.
Каждая переменная имеет определенный тип значений и сферу действия, в противном случае ей приписывается тип Variant. На рис. 19.21 показана сфера действия переменных.
Рис. 19.21.Сфера действия переменных в программе на языке VBA
Переменные, объявленные только в процедуре, действуют в пределах процедуры. Объявление переменной на уровне модуля делает ее доступной для всех процедур модуля. При этом допускается переопределение имени переменной во вложенных процедурах. Для использования переменной во всех вложенных процедурах и модулях она объявляется глобальной на уровне внешнего модуля (например, переменная Var0 доступна всем вложенным модулям и их процедурам).
Пример 19.12.Переменные var4, var5 используются только в самих процедурах. Переменная var2 объявлена в процедурах 1 и 2. Это соответствует двум различным переменным с одинаковым именем и своей сферой действия (они имеют разные значения и/или типы данных, независимы друг от друга).
Переменные на уровне модуля, var1 – в модуле 1 и var3 – в модуле 2, используются во всех вложенных в модуль процедурах. Переменная var1 предопределена в процедуре 1, но сохраняет свое значение в процедуре 2; переменная var3 предопределена в процедуре 3.
Переменные в модуле объявляются с помощью операторов различных типов:
локальные переменные
Dim <var> As <type>, <var> As <type>, <var> As <type>, ....
глобальные переменные
Public <var> As <type>, <var> As <type>, <var> As <type>, ....
где <var> – имя переменной;
<type> – встроенный тип данных переменной.