Массивы VBAПрограммирование VBA в СУБД Access 2003

RSS, Twitter, Vkontakte, Facebook

Основы программирования VBA

Массивы VBA

Автор: Владимир Ткаченко

Источник: Обучение в интернет

В VBA применяются два вида переменных:

  • простые переменные;
  • переменные массивов.

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

Для обработки элементов в массиве можно использовать циклические структуры. При обработке элементов массива циклические структуры по сравнению с линейными структурами значительно снижают количество операторов в программе. Для обработки данных массивов применяют такие циклические структуры как For…Next и For Each...Next.

Массивы могут быть одномерными и многомерными, статическими и динамическими. К одномерным статическим массивам относится простой список данных (элементов) одного типа. Объявление массива производится следующим образом: Dim MyAr(5) As Integer - это одномерный массив хранит 6 элементов целочисленных значений. Где элемент с номером 5 является верхней границей массива или максимальным номером ячейки памяти.

Нижней границе массива по умолчанию соответствует элемент с номером 0 (минимальный номер ячейки памяти). Значение нижней границы массива можно изменить с помощью ключевого слова To. Например, в Dim MyAr(2 To 5) As String нижней границе массива установлено значение 2. Элементы массива имеют номера (индексы) 2, 3, 4, 5, значения которых (любые целые числа) размещаются в оперативной памяти последовательно. Необходимо отметить, что каждому элементу массива присваивается индекс. В массиве VBA допускается использовать до 60 индексов.

Индекс определяет положение элемента в массиве. Что касается значений элементов, то они могут быть любыми значениями, которые соответствуют объявленному типу данных. Для определения значений элементов массива используют следующую конструкцию: Переменная_Массива (индекс) = Значение.

Для объявления статического многомерного массива (матрицы) в поле индекса необходимо указать несколько индексов. Например, для двумерного массива (двумерной таблицы) в поле индекса надо указать два индекса: количество столбцов и строк.
Dim MyAr(5, 3) As String - это двумерный массив из 24 элементов (6 столбцов и 4 строк).

Динамический массив - это массив, при объявлении которого не указаны его границы в явном виде. Например, Dim MyAr() As String. Для управления верхней и нижней границ массива используют ключевые слова ReDim, т.е. ReDim перераспределяет размеры массива. Инструкция ReDim имеет следующую конструкцию: ReDim [Preserve] ИмяПеременной (индексы) As ТипДанных. Где Preserve (не является обязательной инструкцией) - это ключевое слово, которое обеспечивает сохранность значений в текущем массиве при изменении размера массива инструкцией ReDim.

Пример динамического массива:
Dim MyAr() As String ' объявление динамического массива.
Dim intCounter As Variant ' объявление переменной.
ReDim MyAr (2 To 5) As Integer ' определение размера одномерного массива из 4 элементов с нижней границей 2.
For intCounter = 2 To 5 ' в цикле For ...Next переменной intCounter присваивается последовательно значения от 2 до 5.
<блок операторов>
Next

В VBA Access чаще приходится работать не с массивами, а с коллекциями объектов. Коллекция объектов — это группа связанных объектов. Например, в Access предусмотрена коллекция AllForms, которая хранит все формы базы данных. Другими словами в объекте Application приложении Access есть объекты CurrentProjec и CodeProject, которые содержат множество коллекций, в том числе и коллекцию AllForms. Коллекция AllForms содержит объекты AccessObject для каждой формы. Необходимо отметить, что объекты AccessObject представляют формы, отчеты, таблицы и другие объекты.

В коллекциях предусмотрен стандартный набор свойств и методов. Метод Add служит для добавления нового элемента в коллекцию, а Remove, для удаления элемента из коллекции. Метод Item для получения доступа к требуемому элементу коллекции. Свойство Count предназначено для получения информации о количестве элементов в коллекции.

Подпишитесь на мою рассылку СУБД MS Access 2003 -это просто!