VBA обрабатывает данные различных типов, форматы данных приведены в табл. 1. Тип данных указывается при объявлении переменных, массивов, пользовательских типов данных. С помощью встроенных функций VBA выполняется преобразование типов данных.
Таблица 13.1
Тип
| Значение и длина типа данных
| Функция
|
Boolean
| Логическое True (истина, -1), False (ложь, 0), 2 байта
| CBool
|
Currency
| Числовое значений, денежный формат с фиксированным количеством знаков после десятичной запятой, 8 байтов
| CCur
|
Date
| Дата/время, 8 байтов
| CDate
|
Double
| Числовое значение, плавающая точка, двойная точность, 8 байтов
| CDbl
|
Integer
| Числовое значение, короткое целое, 2 байта
| CInt
|
Long
| Числовое значение, длинное целое, 4 байта
| CLng
|
Single
| Числовое значение, плавающая точка, обычная точность, 4 байта
| CSng
|
Decimal
| Числовое значение, до 28 значащих цифр, 14 байт
| CDec
|
String
| Строковые значения, 1 символ занимает 1 байт
| CStr
|
Byte
| Целое число от 0 до 255, отдельные символы, 1 байт
| CByte
|
Variant
| Универсальный тип данных, 16 байтов плюс по 1 байту на каждый символ строковых данных
| CVar
|
Object
| Ссылка на объекты, 4 байта
|
|
Переменные — именованные области памяти для временного хранения значений выражений или свойств объектов. В VBA используется два режима объявления переменных:
· необязательное объявление (по умолчанию все переменные имеют тип Variant);
· обязательное объявление — в начале программного модуля размещается оператор Option ExplicitиоператорDim объявления переменных.
Для переменных различается область действия:
· процедура — используются личные переменные, которые действительны только внутри процедуры:
Dim имя As тип
Private имя As тип
Для сохранения значения переменной при выходе из процедурыи ее повторного использования указывается
Static имя_переменной As тип
· модуль — переменные используются всеми процедурами данного модуля:
Dim имя As тип
· проект— общие переменные используются всеми процедурами любых модулей проекта:
Public имя As тип
Можно объявлять несколько переменных в одном предложении, указав для каждой переменной тип. Если тип данных не указан, считается, что он соответствует Variant. Например, для переменной Z по умолчанию тип Variant:
Dim X As Integer, Y As String, Z
Массив переменных содержит элементы, которые идентифицируются с помощью имени массива и индекса (порядкового номера элемента). Размерность массива может достигать 60. По умолчанию индексы массива начинаются с 0, верхние и нижние границы каждой размерности определяются целочисленными значениями[1].
При объявлении массивов различной сферы действия используются ключевые слова Dim, Public, Private и Static. Тип элементов массива задается с помощью ключевого слова As:
Dim имя_массива (размер1, …, размер n) As тип
Пример 1
Определить двумерный массив (матрицу), 10 строк и 10 столбцов целых чисел.
Dim MyArray(9, 9) As Integer
В VBA можно использовать динамические массивы, верхняя граница размерности которых может многократно изменяться, например:
Dim Arr1() As Single
Для очередного изменения размерности массива выполняется инструкция:
ReDim Arr1(10)
Для расширения состава типов данных служит пользовательский тип данных, в одну структуру включаются разнородные элементы информации:
[Private|Public] Type имя_типа
имя_элемента1 [([индексы])] As тип
имя_элемента2 [([индексы])] As тип
…
End Type
Для присвоения значения элементам пользовательских типов данных используется выражение вида:
имя_типа.имя_элемента = <значение>
Присвоение переменной пользовательского типа данных выполняется с помощью инструкций:
Dim имя As имя_типа
или
Dim имя_массива (размер) As имя_типа
Пример 2
Создать пользовательский тип данных State, содержащий:
§ статический массив — Code, состоящий из 10 целых чисел;
§ строковую переменную — Cnty фиксированной длины в 30 символов.
На основе типа данных State определить массив ExState размерностью 50 элементов.
Фрагмент программного кода:
Type State
Code (1 To 10) As Integer
Cnty As String * 30
End Type
Dim ExState (1 To 50) As State