Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Массив— это переменная, в которой хранится сразу несколько значений. В то время как простая переменная имеет дело с одним значением конкретного типа данных, массив применяется в тех случаях, когда нужно использовать множество значений конкретного типа данных. Формальное определение массива таково: он представляет собой совокупность однотипных индексированных переменных.
Количество используемых индексов массива также может быть различным. Чаще всего используются массивы с одним или двумя индексами, реже — с тремя, еще большее количество индексов встречается крайне редко. В VBA допускается использовать до 60 индексов. О количестве индексов массива обычно говорят как о размерности массива: массивы с одним индексом называют одномерными, с двумя — двухмерными, и так далее. Массивы с большим количеством измерений могут занимать очень большие объемы памяти, так что следует быть осторожным в их применении.
Замечание
Массивы в VBA играют столь же важную роль, как и в других языках программирования: для обработки больших объемов часто используемых данных их использование просто необходимо. Зачастую начинающие программисты на VBA используют просто ячейки рабочих листов Excel или таблиц в Word для хранения и обработки данных одномерных или двумерных массивов. Если приходится часто использовать хранящиеся в массиве данные, то постоянное обращение к ячейкам рабочих листов или таблиц очень сильно замедляет работу!
Прежде чем использовать массив, нужно обязательно объявитьего с помощью оператора Dim, и указать при этом тип хранящихся в массиве значений. Все значения в массиве обязаны принадлежать к одному типу данных. Это ограничение на практике можно обойти, использовав при объявлении массива тип Variant — в этом случае элементы массива смогут принимать значения различных типов. Мы уже говорили в параграфе 6.3.3 о недостатках и преимуществах использования этого универсального типа данных. Вот синтаксис оператора объявления массива:
Dim имяМассива (размер1, размер2, …) As типДанных
где указанные в скобках величины размер1, размер2 и так далее задают размеры массива — количество индексов и максимально допустимое значение для каждого конкретного индекса. При этом индексирование элементов массива по умолчанию начинается с единицы. Так, объявление
Dim Array1 (10) As Integer
определяет одномерный массив из 10 элементов, являющихся переменными целого типа, а объявление
Dim Array2 (5, 10) As Variant
определяет двумерный массив из пятидесяти (5*10) элементов, являющихся переменными универсального типа Variant.
При объявлении массива можно и явно указать не только верхнюю границу индекса, но и его нижнюю границу, то есть явно задать диапазон изменения конкретного индекса массива, причем нижняя граница может быть любым целым числом, не обязательно положительным. Вот синтаксис такого определения:
Dim имяМассива (мин1 To макс1, …) As типДанных
Например, если вы собираетесь работать с массивом метеорологических данных, представляющих собой средние дневные температуры за последние две недели, то может оказаться весьма удобным дать следующее определение массива:
Dim Temperature (-14 To 0) As Single
При этом, например, Temperature(-2) будет соответствовать позавчерашней температуре, а для определения нужного индекса для интересующего вас дня будет достаточно использовать разность дат.
Замечание
В качестве стандартного значения нижней границы для допустимых значений индекса может использоваться не только единица. Можно изменить это стандартное значение с помощью оператора Option Base. Например, если поместить в начало вашего модуля оператор Option Base 0, то индексирование элементов по умолчанию будет начинаться с нуля, а не с единицы.
В приведенных выше примерах речь все время шла о массивах фиксированного размера, количество элементов в которых явно указано во время описания массива в операторе Dim. Такие массивы называются статическими. В VBA допускается использование и динамических массивов, размеры которых при описании не фиксируются. Определение размера динамического массива может быть сделано непосредственно во время выполнения программы.
При определении динамического массива в операторе Dim после имени массива стоят лишь пустые скобки и описание типа переменных. Количество индексов и диапазон их изменения не задаются. Однако перед тем, как использовать массив, нужно выполнить оператор ReDim, который задаст размерность и диапазоны изменения индексов динамического массива.
Синтаксис объявления и определения размеров динамического массива таков:
Dim имяМассива () As типДанных
ReDim имяМассива (размер1, размер2, …)
Вот как может выглядеть объявление, определение размеров и использование динамического массива, а затем последующее изменение размерности и размеров этого же массива:
Dim dArray() As Variant
ReDim dArray(2)
dArray(1) = 1
dArray(2) = 2
k = dArray(1) + dArray(2)
ReDim dArray(2, k)
dArray(1, 3) = "Строка"
В этом примере массив dArray сначала определяется как одномерный массив из двух элементов, а затем переопределяется как двумерный массив, причем верхняя граница второго индекса задается переменной k.
Дата публикования: 2014-12-28; Прочитано: 901 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!