Динамический массив VBA (Redim и Redim Preserve)

В этом руководстве будет показано, как использовать динамические массивы (redim и redim preserve) в VBA.

Динамический массив

Динамические массивы массивы, которые могут изменять размер (в отличие от статические массивы, которые статичны).

Чтобы объявить динамический массив, вы объявляете массив, но опускаете размер массива:

1 Dim strNames () как строка

Затем, прежде чем вы сможете присвоить значения вашему массиву, вы должны использовать оператор ReDim, чтобы установить массив до желаемого размера:

1 ReDim strNames (от 1 до 3)

Теперь, когда вы захотите изменить размер массива, просто используйте ReDim (или ReDim Preserve, как мы узнаем ниже).

Динамические варианты массивов

Примечание. Вариантные массивы немного отличаются. При использовании вариантных массивов вам не нужно устанавливать размер массива с помощью ReDim перед присвоением значений.

12345678 Sub TestArray ()'объявить переменнуюDim varNames () как вариант'заполнить массивvarNames () = Array («Фред», «Вильма», «Барни», «Бетти»)'вернуть значенияMsgBox Join (varNames, ",")Конец подписки

Редим против Редимского заповедника

В ReDim оператор изменяет размер массива, расчистка все существующие ценности.

В ReDim Preserve оператор изменяет размер массива, сохранение («Сохранение») всех существующих ценностей.

Использование ReDim

На практике изменение размера массива с помощью ReDim выглядит так:

123456789101112 Sub TestReDim ()'объявить массив строкDim strNames () как строка'изменить размер строкового массива, чтобы он мог содержать 3 значенияReDim strNames (от 1 до 3)'заполняем массив тремя именамиstrNames (1) = "Мел"strNames (2) = "Стив"strNames (3) = "Боб"'показать результат в ближайшем окнеDebug.Print Join (strNames, vbCrLf)Конец подписки

Использование ReDim Preserve

В этом примере мы будем использовать ReDim для установки начального динамического массива, а затем ReDim Preserve для изменения размера массива, сохранение исходные значения:

1234567891011121314151617 Sub TestReDim ()'объявить массив строкDim strNames () как строка'изменить размер строкового массива, чтобы он мог содержать 3 значенияReDim strNames (от 1 до 3)'заполнить массивstrNames (1) = "Мел"strNames (2) = "Стив"strNames (3) = "Боб"'показать результат в ближайшем окнеDebug.Print Join (strNames, vbCrLf)'редим, но сохраняем данныеReDim Preserve strNames (от 1 до 4)strNames (4) = "Фред"'показать результат в ближайшем окнеDebug.Print Join (strNames, vbCrLf)Конец подписки

Если вы не используете СОХРАНЯТЬ оператор, вы потеряете данные, которые ранее были в массиве.

В непосредственном окне выше в массив попали Мел, Стив и Боб. Когда он был повторно объявлен, он удалял эти значения и вместо этого возвращал 3 пустых значения, а затем значение «Fred». Это связано с СОХРАНЯТЬ заявление опущено.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave