Массивы

Как и в других языках программирования, в 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 для изменения числа элементов и размерностей массива.

Подпрограммы