Нумерация элементов массива
Нумерация элементов массива
Если вы не укажете иное, элементы массива индексируются (т.е. нумеруются) начиная с 0; говоря иначе, первым в массиве будет элемент с индексом 0. По этой причине значение, задающее размерность массива в объявлении, должно быть на единицу меньше числа элементов, которые предполагается иметь. Например, если предполагается создать массив из 10 элементов, для размера нужно указать значение 9.
Об этом не следует забывать, когда придется обращаться к элементам массива. Ссылка типа intMaccив (1) на самом деле означает обращение ко второму элементу в массиве.
Если же вам не нравится отсчет от 0, можно начать нумерацию элементов в любом массиве от другого числа - обычно от 1. Чтобы заставить VBA нумеровать все массивы от 1. поместите в раздел объявлений модуля (перед всеми процедурами) оператор
Option Base 1
Действие этого оператора касается только массивов внутри соответствующего модуля, поэтому при необходимости нужно будет разместить подобные операторы внутри каждого модуля.
Можно задать схемы нумерации и для каждого из измерений в отдельности. Например:
Dim sngNumbers (55 То 75, 7 Тo 16, 99)
В этом примере объявляется трехмерный массив, в котором по первому измерению имеется 21 место, с началом нумерации от 55 до 75; по второму - 10 мест с началом нумерации с 7, а последнее измерение предполагает наличие 100 месте нумерацией от 0.
Если при объявлении массива указать значение для его размера, то размер массива останется фиксированным в ходе всего выполнения программы - программа не сможет сделать массив меньше или больше. Чтобы объявить массив фиксированного размера, укажите в скобках в его объявлении конкретные значения для каждого из измерений массива. Например, оператор
Dim strХорошиеМысли (9, 19) As String
объявляет двумерный массив, который всегда будет содержать 30 строк и 20 столбцов строковых данных (конечно, массив на самом деле не содержит данные в строках и столбцах, по мысленное представление массива в виде подобной таблицы очень удобно).
Фиксирование размера массива при его объявлении определенно можно рекомендовать, если точно известно, что изменение размера массива не потребуется.
В этом случае вы застрахованы и от непредусмотренных изменений размера массива в программе. Правда, потенциальным недостатком фиксированного размера является то, что вы не сможете освободить в программе занимаемую массивом память для других нужд.