Офисное программирование | страница 25
где необязательное ключевое слово Preserve приводит к тому, что VBA сохраняет данные в имеющемся массиве, когда изменяется размер массива с помощью ReDim;
varname – имя существующего массива;
subscripts – измерения массива (синтаксис для оператора subscripts в операторе ReDim такой же, как для оператора Dim);
type – любой тип VBA или определенный пользователем тип.
Необходимо использовать отдельный оператор As type для каждого массива, который вы определяете.
Примеры:
1) Dim Month() As String – объявляет динамический массив Month;
2) ReDim Month(1 to 30) – изменяет размер массива до 30 элементов;
3) ReDim Month(31) – изменяет размер массива до 31 элемента;
4) ReDim Preserv Month(1 to 31) – изменяет размер массива до 31 элемента, сохраняя содержимое;
5) Dim Table() As Integer – объявляет динамический массив;
6) ReDim Table(3, 15) – делает массив двумерным;
7) ReDim Table(4, 20) – изменяет размер двумерного массива;
8) ReDim Preserv Table(4, 25) – только изменяет последний размер массива;
9) Dim Mas as Variant – объявляет переменную типа Variant;
10) ReDim Mas(20) As Integer – создает массив 20 целых чисел в Variant.
Выводы:
1) можно изменять только последнее измерение многомерного массива, когда используется ключевое слово Preserv;
2) можно использовать ReDim для создания типизированного массива внутри переменной типа Variant.
Массив в программе можно также определить поэлементно. Например, следующий код
Dim B(l to 2, 1 to 2) as single
В(1,1)=2
В(1,2)=5
В(2,1)=4
В(2,2)=3
создает двумерную таблицу
При работе с массивами бывает полезно применять следующие функции и процедуры.
1. Array (списокАргументов)
Создает массив типа Variant. Аргумент в скобках представляет разделенный запятыми список значений, присваиваемых элементам массива.
Пример:
Dim День As Variant
День=Array(«Пн»,"вт","ср",….)
2. VBA имеет две функции, которые отслеживают верхний и нижний индексы предела массива, – функции Lbound и ubound. Эти функции возвращают нижнее и верхнее граничные значения индексов статического или динамического массива.
Синтаксис:
Lbound (имяМассива [, размерность])
Ubound (имяМассива [, размерность]),
где ИмяМассива – имя переменной массива;
Размерность – целое число, указывающее размерность массива, нижнюю или верхнюю границу которой возвращает функция. Для первой размерности следует указать 1, для второй – 2 и т. д. Если аргумент размерность опущен, подразумевается значение 1.
3. Использование оператора Erase для очистки или удаления массивов.