|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.7 МассивыМассивы используются для хранения в памяти множества значений. Вместо того, чтобы объявлять множество похожих друг на друга переменных, часто гораздо удобнее воспользоваться массивом. Объявление массива производится очень просто: Dim MyArray (2) As Integer Такой массив может хранить три целочисленных элемента. 2 — это верхняя граница массива (upper bound). Количество элементов, которое может хранить массив, — от 0 до верхней границы включительно. Если вам хочется, чтобы нумерация элементов в массиве начиналась с 1, то в раздел объявлений модуля нужно внести команду Option Base 1 В принципе, тип данных для массива можно не объявлять: Dim MyArray (2) В этом случае для элементов массива будет использован тип Variant. Такой массив сможет хранить в себе элементы разных типов данных, но требования к памяти у него будут выше и работать он будет чуть медленнее. Присвоить значение отдельному элементу массива (в нашем случае — первому) можно очень просто: MyArray (0) = 100 А затем это значение можно будет извлечь: MsgBox MyArray (0) Массивы вполне могут быть многомерными: Dim MyArray (4, 9) В каждой строке многомерного массива удобно хранить данные, относящиеся к одному объекту (например имя сотрудника, уникальный номер, номер телефона). В VBScript в одном массиве может быть до 60 измерений. Часто необходимы массивы динамические — те, размер которых можно изменять в ходе выполнения. Динамический массив объявляется следующим образом: Dim MyArray () '- объявляем массив без верхней границы, эту строку можно ‘пропустить ReDim MyArray (4) ' — изменяем размер массива Команда ReDim не только изменяет размер массива, но и удаляет из него все старые значения. Чтобы старые значения сохранить, используется ключевое слово Preserve: ReDim Preserve MyArray (7) Однако если новый размер массива меньше, чем кол-во помещенных в него элементов, слово Preserve не поможет — часть данных все равно будет потеряна. Массивы можно создавать и заполнять одновременно при помощи встроенной функции Array(): Dim MyArray MyArray = Array(100, 200, 300, 400, 500) Указывать размер массива необязательно — он будет автоматически настроен в соответствии с кол-вом передаваемых элементов. Очистить массив можно командой Erase: Erase MyArray Массив фиксированной длины просто очищается, динамический массив разинициализируется — его придется инициализировать (определять размер) заново. В динамических массивах часто не известно, сколько элементов в массиве. Для определения кол-ва элементов используется функция UBound() (если массив одномерный или вас интересует размер первого измерения, то измерение передавать не надо): UBound (имяМассива [, измерение]) Как ни удивительно, но при программировании в VBA вам редко придется сталкиваться с массивами. Вместо них в объектных моделях приложений Office обычно используются коллекции. Коллекции — это специальные объекты, которые предназначены для хранения наборов одинаковых элементов. Например, в Word предусмотрена коллекция Documents для хранения элементов Document — то есть всех открытых документов, в Excel — коллекции Workbooks (открытые книги) и Worksheets (листы в книге) и т.п. Коллекции обычно удобнее, чем массивы: они изначально безразмерны и в них предусмотрен стандартный набор свойств и методов (метод Add() для добавления нового элемента, свойство Count для получения информации о количестве элементов, метод Item() для получения ссылки на нужный элемент) Подробнее про работу с коллекциями будет рассказано в главе 4 этой книги.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||