VBA Redim Preserve — это команда языка программирования Visual Basic для приложений (VBA), используемая для динамического изменения размера массива с сохранением его существующих значений. Вот несколько методов и примеров кода, связанных с «VBA Redim Preserve»:
Метод 1: изменение размера массива с помощью Redim Preserve
Основное использование Redim Preserve включает указание переменной массива и нового размера массива. Вот пример:
Dim myArray() As Integer
ReDim myArray(4)
' Populate the array with values
myArray(0) = 1
myArray(1) = 2
myArray(2) = 3
myArray(3) = 4
myArray(4) = 5
' Resize the array to accommodate additional values
ReDim Preserve myArray(7)
' Add new values to the array
myArray(5) = 6
myArray(6) = 7
myArray(7) = 8
В этом примере размер массива myArrayизначально рассчитан на размещение 5 элементов. Позже, используя ReDim Preserve, размер массива изменяется так, чтобы вместить 8 элементов, сохраняя при этом существующие значения.
Метод 2: динамическое изменение размера многомерных массивовReDim Preserveтакже можно использовать с многомерными массивами. Вот пример:
Dim myArray() As Integer
ReDim myArray(2, 2)
' Populate the array with values
myArray(0, 0) = 1
myArray(0, 1) = 2
myArray(1, 0) = 3
myArray(1, 1) = 4
myArray(2, 0) = 5
myArray(2, 1) = 6
' Resize the array to accommodate additional rows
ReDim Preserve myArray(4, 1)
' Add new values to the array
myArray(3, 0) = 7
myArray(3, 1) = 8
myArray(4, 0) = 9
myArray(4, 1) = 10
В этом примере многомерный массив myArrayизначально имеет размер 2×2. Используя ReDim Preserve, размер массива изменяется до размера 5×2, сохраняя при этом существующие значения.
Метод 3: изменение размера массива и копирование значений
Если вам нужно изменить размер массива и скопировать существующие значения в новый массив, вы можете использовать комбинацию ReDimи цикла. Вот пример:
Dim sourceArray() As Integer
ReDim sourceArray(2)
' Populate the source array with values
sourceArray(0) = 1
sourceArray(1) = 2
sourceArray(2) = 3
Dim targetArray() As Integer
ReDim targetArray(4)
' Copy values from source to target array
For i = LBound(sourceArray) To UBound(sourceArray)
targetArray(i) = sourceArray(i)
Next i
' Resize the target array to accommodate additional values
ReDim Preserve targetArray(7)
' Add new values to the target array
targetArray(5) = 4
targetArray(6) = 5
targetArray(7) = 6
В этом примере исходный массив (sourceArray) копируется в целевой массив (targetArray) с помощью цикла, а затем размер целевого массива изменяется для размещения дополнительных значения с помощью ReDim Preserve.