Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по КИТ.doc
Скачиваний:
3
Добавлен:
04.11.2018
Размер:
2.3 Mб
Скачать

Массивы

Как и в других языках программирования, в VBA вы можете использовать массивы. Примеры объявления массивов приведены ниже.

Dim B(3, 3) As Single

Dim A(12) As Integer

Первая строка объявляет двумерный массив 3x3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 — базовый ин­декс. Можно изменить базовый индекс, написав в начале листа модуля ин­струкцию Option Base 1. После этого индексы массивов аив будут начи­наться с единицы. Другим способом изменения базового индекса является использование ключевого слова то при объявлении массива:

Dim B(l То 3, 1 То 3) As Single

Dim A(l To 12) As Integer

Массив в программе определяется поэлементно. Например,

Dim B(l To 2, 1 То 2) As Single

B(l,l)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

Удобным способом определения одномерных массивов является функция Ar­ray, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа variant. Например,

Dim A As Variant

А = Array{10,20,30)

В = А(2)

Динамические массивы

Иногда в процессе выполнения программы требуется изменять размер масси­ва. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать размерность, например:

Dim R() as Single

В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, например п, затем изменить размер динамиче­ского массива с помощью оператора ReDim.

Синтаксис:

ReDim [Preserve] ИмяПеременной(Индексы) [As Тип]_

[. ИмяПеременной(Индексы)[As Тип]] ...

Аргументы:

Preserve

Ключевое слово, используемое для сохранения дан­ных в существующем массиве при изменении значе­ния последней размерности

ИмяПеременной

Имя переменной, удовлетворяющее стандартным пра­вилам именования переменных

Индексы

Размерности переменной массива; допускается опи­сание до 60 размерностей. Аргумент индексы исполь­зует следующий синтаксис:

[Нижний То] Верхний [, [Нижний То] Верхний] ...

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией option Base. Если отсутствует инструкция option Base, нижняя граница массива равняется нулю

Тип

Тип данных массива

Например, установим границы массивы r:

ReDim R(1 To 10)

Допустимо повторное использование инструкции ReDim для изменения чис­ла элементов и размерностей массива.

Функции и процедуры для работы с массивами

При работе с массивами бывает полезно применять следующие функции и процедуры.

Array(СписокАргументв)

Создает массив типа variant. Аргумент CписокАргументов представляет разделенный запятыми список значений, присваиваемых элементам массива.

Пример:

Dim День As Variant

День = Array("Пн", "Вт", "Ср", "Чт", "Пт")

IsArray(ИмяПеременной)

Возвращает True, если переменная содержит массив; в противном случае возвращается False. Функцию IsArray используют для проверки значений переменных типа Variant, содержащих массивы

[, размерность])

Размерность — целое число, указывающее размерность, нижнюю или верхнюю гра­ницу которой возвращает функция. Для первой размерности следует указать 1, для второй 2 и т. д. Если аргумент Размерность опущен, подразумевается значение 1

Erase СписокМассивов

Повторно инициализирует элементы массивов фиксированной длины и освобождает память, отведенную для динамического массива. СписокМассивов представляет имена одной или нескольких очишаемых переменных массивов, разделенных запятой. Инструкция Erase уста­навливает элементы массивов фиксированной длины следующим образом: массив чисел или строк фиксированной длины (присваивает каждому элементу значение 0), массив строк переменной длины (присваивает каждому элементу значение пустой строки), массив ти­па variant (присваивает каждому элементу значение Empty).

Erase освобождает память, используемую ди­намическими массивами. Перед тем как из программы вновь появится возможность со­слаться на динамический массив, необходи­мо переопределить размерности переменной массива с помощью инструкции