Объявление переменных

Типы данных

Типы данных относятся к самым фундаментальным понятиям любого языка программирования. Тип данных определяет множество допустимых значений, которое может принимать указанная переменная.

В VBA имеются следующие основные типы данных:

 

Тип данных Размер (байт) Диапазон значений
Byte (байт) От 0 до 255
Boolean (логический) True или False
Integer (целое число) От -32 768 до 32 767
Long (длинное целое число) От -2 147 483 648 до 2 147 483 647
Single (число с плавающей запятой обычной точности) От -3.402823Е38 до -1 .401298Е-45 для отрицательных значений
Double (число с плавающей запятой двойной точности) От -1,79769313486232Е308 до -4,94065645841247Е-324 для отрицательных значений; от 4,94065645841247Е-324 до 1,79769313486232Е308 для положительных значений
Decimal (масштабируемое целое число) +/-79228162514264337593543950335 с 28 знаками справа от запятой; минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001
Date (даты и время) От 1 января 100 г. до 31 декабря 9999г.
Object (объект) Любой указатель объекта
String (строка переменной длины) 10 + длина строки От 0 до приблизительно 2 миллиардов
String (строка постоянной длины) Длина строки От 1 до приблизительно 65 400
Variant (числовые подтипы) Любое числовое значение вплоть до границ диапазона для типа Double
Variant (строковые подтипы) 22 + длина строки От 0 до приблизительно 2 миллиардов
Тип данных, определяемый пользователем (с помощью ключевого слова Туре) Объём определяется элементами Диапазон каждого элемента определяется его типом данных

 

В различные моменты времени переменные могут иметь различные значения. Как правило, переменная имеет первоначальное значение, которое меняется в процессе работы подпрограммы. Имя переменной связывает ее с областью памяти, в которой хранится значение. Перед использованием переменной в программе ее желательно объявить с помощью оператора Dim. При объявлении переменных указываются ее имя и тип, которые определяют способ представления переменной.

Описание типа (объявление, определение) каждой переменной делает программу надежнее и, кроме того, убыстряет ее работу, т. к. VBA не требуется тратить время на распознавание типа неописанной переменной при каждом обращении к ней.

Синтаксис:

 

Dim [WithEvents] ИмяПеременной[([Индексы]]] [As [New] Тип] _

[, [WithEvents] ИмяПеременной [([Индексы] I ] [As [New] Тип]] . . .

 

Аргументы:

WithEvents Ключевое слово, указывающее, что аргумент ИмяПеременной является именем объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX (т. е. объектом, который может быть открыт для других приложений и средств программирования).
ИмяПеременной Имя переменной, удовлетворяющее стандартным правилам именования переменных
Индексы Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента Индексы используется следующий синтаксис: [Нижний То] Верхний [, [Нижний То] Верхний] ... Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю
New Ключёвое слово, включающее возможность неявного создания объекта. Если указано ключевое слово New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на него, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set
Тип Тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение Asтип

 

В упрощенном варианте (вполне достаточном для освоения основ программирования на VBA) синтаксис принимает следующий вид:

 

Dim ИмяПеременной1, ИмяПеременной2, … As ТипДанных

 

Например: Dim i As Integer

 

Место определения переменной задает область, в которой может быть использована переменная. В VBA имеется три соответствующих уровня переменных:

– переменные уровня процедуры используются только в процедуре, в которой они описаны при помощи инструкции Dim, размещенной в процедуре;

– переменные уровня модуля используются только в модуле, в котором они описаны при помощи инструкции Dim, размещенной в области описания модуля, т. е. перед описанием процедур;

– общие переменные, используемые во всех модулях данного проекта, описываются при помощи инструкции Public, размещенной в области описания модуля.

Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры.

Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа.

 

Dim X Аs New Worksheet

 

Если при описании объектной переменной не используется ключевое слово New, то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью инструкции Set.

Формально, при написании своих программ переменные можно не объявлять, и тогда по умолчанию VBA применит для переменных тип Variant. Но, просмотрев таблицу 1 можно увидеть, что ни один из типов данных не требует 16 байт для сохранения значений переменных. То есть необходимо экономить ресурсы памяти компьютера. Кроме того, не объявляя тип переменных, вы рискуете совершить много грамматических ошибок, связанных с написанием переменных, а также получить результат выполнения вашей программы далёкий от ожидаемого по причине некорректного автоматического преобразования типов данных.

Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Оption Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.