Вопрос №25. Двумерные массивы в языке VBA. Индексы. Оператор Option Base1. Операторы Dim и ReDim. Привести примеры.
Двумерные массивы. К ним относятся матрицы. Матрица – таблица, заполненная числами. В VBA базовым индексом строки и столбца являются нулевые индексы.
Описание двумерного массива.
Dim Имя_Массива(индекс1, индекс2)As Тип_Данных
Dim – ключевое слово, декламирующие массив; As – ключевое слово, определяющее из какого типа элементов состоит массив; Имя_Массива – это идентификатор, определяющий имя массива; Индекс1 – значение индекса(номера) последнего элемента в массиве, считая с нулевого; Индекс1 – значение индекса(номера) последнего элемента в массиве, считая с нулевого; Тип_Данных – любой тип данных в VBA.
а00 а 01 а 02 b 00 b 01 b 02 c 00 c 01
А= а 10 а 11 а 12 В= C= c 10 c 11
а 20 а 21 а 22 b 10 b 11 b 12 c 20 c 21
Sub Primer_6()
Dim A(2,2) As Integer
Dim B(1,2) As Single
Dim C(2,1)
End Sub
Как и в одномерных массивах, чтобы изменить базовый нулевой индекс строки и базовый yetdjq индекс столбца, в начале листа модуля нужно указать опцию Option Base 1. Тогда все массивы, используемые в программе. Будут начинаться с индекса 1. Матрицы А, В, С нужно объявить следующим образом:
Option Base 1
Sub Primer_6()
Dim A(3,3) As Integer
Dim B(2,2) As Single
Dim C(3,2)
End Sub
Элементы матрицы распределяться следующим образом:
a11 а 12 а 13 b 11 b 12 b 13 c 11 c 12
А= а 21 а 22 а 23 В= C= c 21 c 22
а 31 а 32 а 33 b 21 b 22 b 23 c 31 c 32
Другим способом изменения нулевого базового индекса на единичный является использование ключевого слова To при объявлении массива.
Option Base 1
Sub Primer 2()
Dim A(1 to 3, 1 to 3 ) As Integer
Dim B(1 to 2, 1 to 3) As Integer
Dim c(1to 3, 1 to 2) As Variant
End Sub
Иногда в процессе выполнения программы требуется изменить размер массива. В этом случае первоначально массив объявляется как динамический, т.е. в объявлении не указывается размерность. Количество элементов в массиве можно предопределить с помощью ключевого слова ReDim.
ReDim Имя_Массива (индекс) As Тип_Данных
Option Base 1
Sub Primer_10()
Dim B()
Const N As Integer =2’количество строк обозначено как N
Const M As Integer =3’количество столбцов обозначено как М
ReDim В(N,М) As Single
End Sub