Массивы
Как и в других языках программирования, в VBA можно использовать массивы. Примеры объявления массивов:
Dim M(3,3) As Single
Dim V(12) As Integer
Первая строка объявляет двумерный массив 3´3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет V(0), а последний V(11). В этом случае говорят, что 0 – базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов M и V будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова Tо при объявлении массива:
Dim M(l То 3, 1 То 3) As Single
Dim V(l To 12) As Integer
Значения элементов массива задаются поэлементно. Н а п р и м е р,
Dim M(l To 2,1 То 2) As Integer
M(l,l)=2: M(1,2)=4: M(2,1)=1: В(1,2)=6
Удобным способом задания одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant.
Н а п р и м е р,
Dim A As Variant
А = Array{10,20,30)
В = А(2)
Динамические массивы
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не указывают размерность.
Н а п р и м е р:
Dim R() as Single
В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, затем изменить размер динамического массива с помощью оператора ReDim, формат которого:
ReDim [Preserve] ИмяПеременной(Индексы) [As Тип]_
[. ИмяПеременной(Индексы)[As Тип]] ...
Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности.
ИмяПеременной – имя переменной, удовлетворяющее стандартным правилам именования переменных.
Индексы – размерности переменной массива; допускается описание до 60 размерностей. Аргумент Индексы использует следующий синтаксис:
[Нижний То] Верхний [, [Нижний То] Верхний] ...
Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю.
Тип – тип данных массива.
Н а п р и м е р, установим границы массива R:
ReDim R(1 To 10)
Допустимо повторное использование инструкции ReDim для изменения числа элементов и размерностей массива.
Подпрограммы