Excel. Трюки и эффекты. Алексей Гладкий
Читать онлайн книгу.нужно явно указывать нижнюю и верхнюю границы измерения массива (например, 50 То 100).
При задании размерности можно также просто указывать требуемое количество элементов в данном измерении массива. При таком задании в качестве нижней границы измерения используется значение по умолчанию (об изменении этого значения будет рассказано далее).
Ниже приведены примеры объявлений массивов (переменного размера, двух одномерных и двух многомерных):
Dim avarValues()
Dim astrValues(1 To 10) As String, astrValues2(10) As String
Dim aintValues(1 To 10, 1 To 3) As Integer, aintValues(10, 3)
As Integer
Задание нижней границы по умолчанию
Как было сказано ранее, при указании размерности измерения массива может использоваться значение нижней границы по умолчанию. Для задания нижней границы, используемой по умолчанию, предназначена директива Option Base. Существуют только два варианта данной директивы:
Option Base 0
и
Option Base 1
Первый вариант устанавливает нижнюю границу равной нулю (используется по умолчанию), а второй – единице.
Изменение размера массива
Язык VBA позволяет изменять размер динамического массива во время выполнения программы. Кроме того, VBA дает возможность изменять количество измерений такого массива. Для этого используется инструкция ReDim, формат которой следующий:
ReDim [Preserve] Имя_массива ([Размерность])[As Имя_типа] _
[, Имя_массива ([Размерность]) [As Имя_типа]]…
Назначение элементов данной инструкции полностью аналогично назначению одноименных элементов инструкции Dim (при использовании ее для объявления массивов). Тип элементов массива можно указывать только в том случае, если Имямассива – это идентификатор переменной типа Variant.
При выполнении инструкции ReDim без использования ключевого слова Preserve значения всех элементов, которые ранее были в массиве, теряются. Ниже приведены примеры таких инструкций:
ReDim astrValues(1 To 10), aintValues(10, 20)
ReDim varArray(2 To 4) As Boolean
Использование Preserve позволяет изменять размер массива, не теряя значений его элементов. Однако использование данного ключевого слова налагает некоторые ограничения на возможности манипулирования массивами:
• нельзя изменять количество измерений массива;
• нельзя изменять размерности измерений массива, кроме размерности последнего измерения;
• можно изменять только верхнюю границу последнего измерения массива.
Давайте рассмотрим пример использования инструкции ReDim с ключевым словом Preserve:
' Первая инструкция ReDim для динамического массива
ReDim astrValues(1 To 5, 1 To 10)
…
' Увеличение размера массива
ReDim Preserve astrValues(1 To 5, 1 To 25)
…
' Уменьшение размера массива
ReDim Preserve astrValues(1 To 5, 1 To 15)
Определение границ массива
Так как VBA позволяет задавать произвольную нижнюю границу массива, при написании программ крайне удобно наличие возможности узнать границы массива во время выполнения программы. Для этой цели в VBA введены две функции, формат которых следующий:
LBound(Имя_массива[,