Изменение размера массива
Язык 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)