Переменные могут создаваться простым упоминанием о них в коде или могут быть объявлены заранее.
Первый способ создания переменных ("на ходу")
Второй способ – объявление переменных заранее.
Имена переменных
Имена переменных (как и всего остального, что вы создаете и именуете в VisualBasic) должны подчиняться следующим правилам. Имя переменной:
- Должно иметь длину от 1 до 40 символов;
- Должно начинаться с буквы;
- Должно содержать только буквы, цифры и символ подчеркивания (_);
- Не должно быть ключевым словом VisualBasic.
Тип данных по умолчанию: Variant
VisualBasic позволяет вам выбирать: объявлять или не объявлять переменные.Если вы решили не объявлять переменную, VisualBasic автоматически объявляет ее как имеющую тип Variant, который является типом данных по умолчанию.
Именованные константы
Переменная, как вы знаете, - это величина, которая может изменяться во время выполнения программы. А вот константа – это величина, которая не может изменяться во время выполнения программы. Константы могут быть фиксированными числами (вроде 1048576 – это число байтов в одном мегабайте) или строками (вроде "Variablenotdefined" – сообщение об ошибке, которым VisualBasic только что наградил вас).Именованная константа – это имеющее смысл название, которому вы присваиваете числовую или строчную константу. Чтобы объявить именованную константу, вы должны использовать утверждение Const. Вот его синтаксис: Const CONST_NAME=constValue
CONST_NAME – это название вашей именованной константы (например, ONE_MEGABYTE);
ConstValue – это значение константы, которое вы хотите присвоить CONST_NAME (1048576). Программисты обычно используют для именованных констант прописные буквы.
Использование именованных констант упрощает написание и модификацию программ и значительно улучшает читаемость ваших программ.
Область видимости и время существования
Каждая переменная и именованная константа в программе имеет свою область видимости внутри этой программы. Переменная или именованная константа с локальной областью видимости доступна только процедуре или модулю, в которых она объявлена. Переменная с глобальной областью видимости видна всем модулям программы. Область видимости переменной определяется при описании этой переменной. Именованные константы имеют область видимости, но не имеют время существования. Время существования определяет, как долго каждая переменная сохраняется в памяти.
Каждая переменная в программе на VBA имеет одну из следующих областей видимости:
- Локальная на уровне процедуры (уровень процедуры).
- Локальная на уровне модуля (личный уровень модуля).
- Глобальная на уровне модуля (общий уровень модуля).
Локальные переменные на уровне процедуры. Переменная с такой областью видимости видна только процедуре, где она объявлена. Чтобы создать локальную переменную на уровне процедуры, нужно ее просто объявить внутри процедуры. Переменные, локальные на уровне процедуры, полезны для рабочих вычислений, результаты которых не требуется передавать в другие процедуры. В VBA нет глобальных переменных не уровне процедуры. Все переменные уровня процедуры являются локальными.
Локальные переменные на уровне модуля
Переменная с данной формой видимости видна всем процедурам своей формы, но не видна процедурам других форм или модулей. Чтобы создать локальную переменную на уровне модуля используется утверждение Private. Если переменной предшествует ключевое словоPrivate, область определения задается программой пользователя. Переменные уровня модуля полезны для вычислений, результаты которых требуется передавать в другие процедуры той же самой формы или модуля. Переменные, описанные с помощью ключевого слова Dim на уровне модуля, доступны для всех процедур в данном модуле.
Глобальные переменные на уровне модуля
Переменная с данной формой видимости видна всем процедурам во всех формах и модулях всего проекта. Если переменная объявлена как глобальная на уровне модуля, каждая строка программы всех форм и модулей будет обращаться к этой переменной. Для создания глобальной переменной на уровне модуля используется утверждение Public. Глобальные переменные уровня модуля полезны для вычислений, результаты которых должны быть доступны на уровне всего проекта всем формам и модулям. Для определения области видимости именованных констант применяются те же правила. Именованную константу, локальную на уровне процедуры или на уровне модуля, объявляют в процедуре или модуле соответственно с помощью ключевого слова Const. А для объявления именованной глобальной константы уровня модуля необходимо вместе с ключевым словом Public ключевое слово Const.VBA позволяет использовать одни и те же имена переменных или именованных констант, но с разными областями видимости. VBA всегда использует переменную, которая является наиболее "своей" для текущего фрагмента программы. Если одна и та же переменная объявлена как глобальная и как локальная, то в том модуле (процедуре), где она описана локальной, используется локальная переменная, а во всех остальных модулях (процедурах) она будет использоваться как глобальная.
Время существования переменных
Когда процедура завершается, все ее локальные переменные удаляются, освобождая память для повторного использования. Когда процедура запускается еще раз, ее локальные переменные создаются снова, что обнуляет их значения. Объявляя локальную переменную на уровне процедуры как Static, VBA сохраняет ее значение. Так что при следующем запуске процедуры последнее значение этой переменной будет восстановлено. Чтобы объявить статическую локальную переменную на уровне процедуры, вместо Dim используется ключевое слово Static.
Для объявления всех переменных процедуры статистическими следует вставить ключевое словоStatic перед заголовком процедуры.
Переменные уровня модуля всегда статические, они хранятся в памяти на протяжении всей программы.