Для описания массива фиксированного размера используется следующий синтаксис:
Dim ИмяПеременной[([индексы])] [As тип]
(Квадратные скобки указывают на наличие необязательного параметра).
Для задания аргумента индексы может использоваться следующий синтаксис:
[нижний индекс To ] верхний индекс[, [нижний индекс To ] верхний индекс]...
Если нижний индекс не задан явно, нижняя граница массива равняется нулю. Верхняя границаопределяет максимальное значение количества элементов в массиве. To – зарезервированное слово. Тип элементов массива можно не указывать явно, поскольку по умолчанию тип данных – variant.
В описании массива в языке VBA размерность задается числом граничных пар или максимальных значений. Рассмотрим несколько способов объявления одного и того же двумерного массива вещественного типа.
Dim mass (8, 3) as double – ‘объявление массива заданием его максимальных значений;
Dim mass (0 To 8, 0 To 3) as double – ‘объявление массива заданием его граничных пар.
Индексация массива по умолчанию начинается с 0. В языке VBa допускается индексация и с 1. Для этого необходимо использовать инструкцию Option Base 1, которая должна находиться в разделе описания модуля.
ОПИСАНИЕ МАССИВА ПЕРЕМЕННОГО РАЗМЕРА
Если массив описан как динамический, то можно изменять его размер во время программы.
Синтаксис:
Dim ИмяПеременной () [As Type ]
В этом случае при описании динамического массива с помощью инструкции Dim размер массива не указывается, для описания используются пустые круглые скобки. Далее в программе следует воспользоваться инструкцией ReDim для изменения числа размерностей и определения числа элементов в массиве.
Например:
Redim mass(25) – одномерный массив из 26 элементов;
Redim mass(10,10)- двумерный массив из 121 элемента.
Инструкцию Redim в программе можно применять столько раз, сколько потребуется. Однако при каждом применении Redim данные, содержащиеся в массиве, теряются.
Типовые алгоритмы обработки массивов
1. Обнуление всех элементов массива:
For i=0 To N
mass(i)=0
Next i
2. Заполнение элементов массива значениями с клавиатуры
For i=0 To N
mass(i)= InputBox(“Ввод числа”)
Next i
3. Заполнение элементов массива случайными целыми значениями
Randomize
For i=0 To N
mass(i)=Int(Rnd*100+1)
Next i
4. Заполнение и вывод на экран элементов массива
Dim s as string
For i=0 To N
mass(i)= Int(Rnd*100+1)
s=s & mass(i) & ”-” (накапливание в строке значений элементов массива)
Next i
5. Формирование одного массива из элементов другого массива, удовлетворяющих заданному условию.
For i=0 To N
massА(i)=Int(Rnd*100+1)
If massA(i)>50 then
massB(j)=massA(i)
j=j+1
End if
Next i
6. Поиск максимального и минимального элементов массива
max=mass(0)
min=mass(0)
For i=1 To n
If mass(i)>max Then max=mass(i)
If mass(i)<min Then min=mass (i)
Next i
7. Обмен местами максимального и минимального элементов массива
max=mass(0)
min=mass(0)
For i=1 To n
If mass(i)>max Then
max=mass(i)
imax=i
End if
If mass(i)<min Then
min=mass (i)
imin=i
End if
Next i
x = mass(imax)
mass(imax) = mass(imin)
mass(imin) = x