Решим простую задачу: ввести в ответ на вопросы программы фамилии сотрудников. Если фамилий немного - 5 или 10 - использование переменных, с которыми вы уже знакомы, вполне оправдано. Программа будет состоять из нескольких строк такого вида:
a = InputBox("Введите фамилию сотрудника").
Как быть, если нужно работать со списком из 20 фамилий? А если их будет 50, 1000 или их количество должно быть определено в ходе выполнения программы?
Для обработки больших объемов информации использовать переменные неудобно. Что же делать? Ответ прост: использовать массивы.
Массив - это именованный набор индексированных ячеек. Ячейки так же называют элементами или индексированными переменными.
У каждого массива 5 основных характеристик: имя, размерность, число элементов, номер первого элемента и тип элементов.
Имя- правила именования массивов аналогичны правилам именования переменных.
Размерность- одномерные массивы напоминают одну строку таблицы, каждая ячейка которой содержит какие-то данные. Многомерные массивы имеют больше измерений. Их можно сравнивать с таблицами, имеющими множество строк и столбцов и с наборами таблиц.
Нумерация элементовподчиняется следующим правилам:
По умолчанию нумерация элементов массива начинается с 0. Первый по счету элемент получит индекс 0, второй - 1 и т.д.
В объявлении отдельного массива можно явно указать индекс его первого и последнего элемента, разделив их ключевым словом To.
Если вы хотите, чтобы индексы всех массивов начинались с 1, добавьте в раздел объявлений модуля (вне процедур, функций и обработчиков событий) команду OptionBase 1.
Тип- подчиняется тем же правилам, которые мы ранее рассмотрели для переменных. Если пользователь не указал его явно, массив получит тип по умолчанию - Variant. Это требует больше системных ресурсов, но позволяет обрабатывать значения различных типов.
Не всегда количество элементов и размерность массива известны до начала работы программы. VBA умеет работать с динамическими массивами, параметры которых можно менять в ходе выполнения программы. О них мы поговорим ниже.