- •Современные офисные пакеты
- •6.5. Прикладные системы подготовки текстов
- •Макроязыки офисного приложения
- •Структура редактора vba
- •Типы данных и переменные vba
- •5.3. Типы данных в vba
- •Классы и объекты.
- •Операторы условного перехода, операторы в vba.
- •Циклические операторы vba
- •9.18. Оператор цикла While…Wend
- •9.19. Оператор цикла For…Next
- •Строковые функции
- •Математические функции
- •Функции преобразования типов в vba.
- •Использование функций преобразования типов
- •Диалоговые окна
- •Основные элементы управления
- •Общие свойства элементов управления Кратко о некоторых элементах управления Некоторые общие свойства элементов управления
- •Некоторые элементы управления
- •Операции с файлами
- •Работы с массивами и строками
- •Объявление массивов Объявление фиксированных массивов
- •Объявление динамических массивов
Работы с массивами и строками
Массив - переменная, состоящая из некоторого количества однотипных элементов. У массива, как и у любой другой переменной, есть имя. А доступ к конкретному элементу массива осуществляется через указание в скобках после имени его индекса. Например, A(5) означает, что я обращаюсь к элементу с индексом 5 массива, имеющего имя A.
Массивы в VBA и во многих других языках программирования делятся на 2 класса:
Фиксированные массивы. Такие массивы состоят из заранее известного количества элементов. Это количество определяется во время объявления массива и уже не может быть изменено в процессе его жизненного цикла. Вы, конечно же, сможете использовать меньшее количество элементов, но не существует способа увеличить количество элементов сверх объявленного.
Динамические массивы. Эти массивы можно "переобъявлять" в процессе жизненного цикла. То есть мы можем управлять количеством элементов динамических масивов в зависимости от наших потребностей. Это очень удобно, так как в подавляющем большинстве случаев программист не может заранее знать, с каким объёмом данных он столкнётся. Если вы собираетесь писать более-менее универсальные программы, то этот тип массивов определенно стоит изучить.
Объявление массивов Объявление фиксированных массивов
?
1 2 |
Dim arrTemp(10) as Long Dim arrTest(32) as String |
Рекомендация: при объявлении массивов VBA я советую вам давать всем именам префикс "arr". Я сторонник венгерской нотации.
Как мы видим, тут объявлено 2 одномерных массива arrTemp и arrTest. Одномерные массивы в программировании также часто называют векторами. Типом элементов первого массива является Long, второго массива - String. В этом типе синтаксиса в скобках указан максимальный индекс (верхняя граница ) элемента массива. А что насчёт минимального индекса (нижней границы) массива? По-умолчанию минимальным индексом является ноль. В данном случае стандартное поведение интерпретатора языка VBA можно изменить при помощи оператора option base {0|1}. Option base 1 заставляет VBA считать нижней границей массива - единицу, а не ноль.
Таким образом, по-умолчанию массив arrTemp имеет 11 элементов - от 0 до 10. Но, если в начало модуля, в котором этот массив объявляется, вставить оператор Option Base 1, то массив arrTemp будет иметь 10 элементов - от 1 до 10.
Помимо вышеуказанного вы вправе использовать следующий синтаксис, который НЕ зависит от option base {0|1}:
?
1 2 3 |
Dim arrFlat(0 To 4) as Boolean Dim arrData(5 To 25) as Integer Dim arrCazus(-5 To -1) as Single |
таким образом вы в явном виде указываете и нижнюю, и верхнюю границы. Как видите, нижняя граница совершенно не обязательно должна начинаться с 0 или 1. Более того, индексы границ могут принимать и отрицательные значения, главное чтобы нижняя была меньше верхней.
Помимо одномерных массивов, можно объявлять и массивы с размерностью больше единицы.
?
1 2 |
Dim arrMulti(10,30) as Range Dim arrData3(0 To 1, 1 To 3, 1 To 10) as Variant |
arrMulti - двумерный массив, а arrData3 - трёхмерный. Первый содержит 11*31=341 элемент, второй - 2*3*10=60 элементов. Теоретически допускается объявлять до 60 размерностей массива.
Какие типы данных могут стать элементами массива? Тут всё, как в шутке про фамилию еврея, - абсолютно любой тип данных годится на роль элемента массива, включая объектные типы, User Data Type, другие массивы (через тип Variant). Если вы не указываете при объявлении тип данных массива, то предполагается, что этим типом является тип Variant.
▲ вверх
