Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA_lektsii.doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
3.91 Mб
Скачать

3. Массивы vba

3.1. Размерность массива

Массивы VBA и других языков программирования весьма схожи; они незаменимы работе с большими объемами данных. Попросту говоря, массив – это переменная, содержащая несколько значений, или еще проще – пронумерованная группа значений одного и того же типа. Если обычные переменные полезны при работе с одиночными значениями определенного типа, массив пригодится при действиях с набором значений того же типа.

Конечно, в действительности массивы устроены сложнее хотя бы потому, что они могут быть многомерными. Каждое измерение массива характеризуется численным индексом. Одномерный массив – это просто пронумерованный список значений. Он имеет начальную (первый элемент) и конечную (последний элемент) точки; между ними помещены остальные значения массива, которые не перекрываются и однозначно определяются своими индексами.

Двухмерный массив более сложен – в него включены наборы списков одной длины. Часто такие наборы называют таблицами или матрицами. Они состоят из строк и столбцов, на пересечении которых находятся табличные данные. Простой пример двухмерного массива изображен на рис. 3.1.

Рис. 3.1. Двухмерный массив, известный также как таблица или матрица

Трехмерный массив можно считать набором таблиц, в котором все таблицы имеют одинаковые количества строк и столбцов. Трехмерные массивы напоминают рабочую книгу Excel, содержащую несколько листов. Для доступа к элементу трехмерного массива надо указывать три координаты: строку, столбец и таблицу.

Но это не предел! Четырехмерный массив: еще больше, и в его состав входят группы таблиц с одинаковой структурой. Продолжая аналогию с рабочей книгой, можно сказать, что четырехмерный массив подобен папке с файлами рабочих книг, теперь для доступа к значению вам придется указывать не только строку, столбец и таблицу, но и файл.

Массивы VBA могут иметь до 60 измерений. Представьте, какие сложные наборы данных вы сможете поместить в 60-мерный массив. Впрочем, чаще всего в VBA используют одно- и двухмерные массивы; даже трехмерные массивы применяют редко. С массивами большей размерности не работают почти никогда, в частности из-за того, что они, как правило, требуют больше памяти, чем доступно на персональном компьютере.

3.2. Объявление массива

Действия с массивами очень похожи на действия с переменными. Прежде чем использовать массив, вы должны его описать и указать тип данных. В массивах используются те же типы данных, что и в одиночных переменных, причем массив может содержать только однотипные значения. Обойти это ограничение легко – создайте массив типа Variant, в котором можно хранить данные любого типа.

Вот пример описания одномерного массива для данных типа Integer:

Dim ЧисловойМассив(10) As Integer

Это описание ничем не отличается от описания переменной, которое обсуждалось ранее, за единственным исключением – после имени переменной вводится число в круглых скобках, указывающее VBA, что вы объявляете не одиночную переменную, а массив и его размерность. Здесь мы задали только одно число, значит, будет создан одномерный массив ЧисловойМассив, предназначенный для хранения 10 целых чисел, если Option Base 1 (см. далее) и 11 чисел, если Option Base 0. В действительности число 10 определяет верхнюю границу индексов массива.

Объявление двухмерного массива выглядит так:

Dim ДвухмерныйМассив (10,20) As String

Таблица ДвухмерныйМассив состоит из 10 строк и 20 столбцов и содержит до 200 строковых переменных.

И еще один пример – описание трехмерного массива типа Variant:

Dim ТрехмерныйМассив(5,50,100) As Variant

Массив ТрехмерныйМассив состоит из пяти таблиц, каждая из которых содержит по 50 строк и 100 столбцов. Он может содержать до 25 000 элементов.

Как видите, при увеличении размерности быстро возрастают и требования к объему памяти. При определении массива VBA выделяет достаточно места для всех его элементов. Точный объем выделяемой памяти зависит от размера массива и типа данных в нем. Например, для целочисленного массива, содержащего 10 элементов, требуется 20 байт, поскольку каждое целое число занимает 2 байта. Трехмерный массив ТрехмерныйМассив, описанный выше и состоящий из значений типа Variant, займет не менее 400 000 байт (25 000 раз по 16 байт). Имейте в виду, что массивы с большим числом измерений займут много памяти и сильно снизят производительность. При попытке объявить массив с объемом, превышающим доступную память компьютера, вы увидите на экране сообщение «Недостаточно памяти» (Out of Memory).

ОБРАТИТЕ ВНИМАНИЕ! Нумерация массивов VBA может начинаться с 0 или 1. Конкретный способ указан в инструкции Option Base в начале модуля. Так, Option Base 0 задает нумерацию всех массивов по умолчанию с 0, a Option Base 1 — с 1. В отсутствие инструкции Option Base нумерация массивов по умолчанию начинается с 0. Но в следующих примерах мы для простоты считаем, что она начинается с 1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]