Динамический массив в Excel VBA
Если размер вашего массива увеличивается, и вы не хотите, чтобы установить размер массива, вы можете использовать ReDim ключевое слово. Excel VBA затем изменяет размер массива автоматически.
Добавьте несколько чисел в столбце A.
Поместите командную кнопку на листе и добавьте строки следующего кода:
-
Во-первых, мы объявляем массив с именем номера. Кроме объявить две переменные типа Integer. Один названный размер и один с именем I.
Dim numbers() As Integer, size As Integer, i As Integer
Примечание: массив не имеет размера еще. число, размер и я случайно выбраны здесь, вы можете использовать любые имена. Не забывайте ссылаться на эти имена в остальной части кода.
-
Далее, мы определяем размер массива и сохранить его в переменный размер. Вы можете использовать функцию рабочего листа COUNTA для этого. Добавьте следующую строку кода:
size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
-
Теперь мы знаем, размер массива, и мы можем redimension его. Добавьте следующую строку кода:
ReDim numbers(size)
-
Далее мы инициализируем каждый элемент массива. Мы используем цикл.
For i = 1 To size numbers(i) = Cells(i, 1).Value Next i
-
Мы отобразить последний элемент массива с помощью MsgBox.
MsgBox numbers(size)
-
Закройте редактор Visual Basic и нажмите кнопку команды на листе.
Результат:
-
Теперь ясно, почему это называется динамическим массивом, добавить номер столбца A.
-
Снова нажмите кнопку управления.
Вывод: Excel VBA автоматически изменен размер этого динамического массива.
-
При использовании ReDim ключевого слова, вы удалите все существующие данные в настоящее время хранится в массиве. Например, добавьте следующие строки кода к ранее созданному коду:
ReDim numbers(3) MsgBox numbers(1)
Результат:
Массив пуст.
-
Если вы хотите сохранить данные в существующем массиве, когда вы redimension его, используйте ключевое слово Preserve.
ReDim Preserve numbers(3) MsgBox numbers(1)
Результат: