Как создать динамическую таблицу в vba?

Динамический массив — это то, где вы можете изменить размер массива и добавить к нему дополнительную ценность во время выполнения кода. В этом уроке мы рассмотрим способы написания кода, в котором вы можете изменять размер и добавлять больше элементов.

Создать динамическую таблицу в VBA

  1. Сначала объявите массив с его именем.
  2. После этого количество элементов в скобках осталось пустым.
  3. Теперь используйте инструкцию ReDim.
  4. В конце укажите количество элементов, которые вы хотите добавить в массив.
 Dim myArray() As String ReDim myArray(5)
динамический массив в vba

Не забудьте прочитать статью Джошуа о производительности фиксированных и динамических массивов.

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

В качестве примера мы использовали одномерный массив, и таким же образом вы можете использовать оператор ReDim для создания динамических многомерных массивов.

 Dim myArray() As String ReDim myArray(5, 8)

Добавьте новый элемент в динамический массив в VBA

Динамический массив будет бессмысленным, если вы не сможете добавить в него новый элемент. В следующем примере мы увидим, как добавлять новые элементы после переопределения количества элементов в массиве.

 'declaring array with no element. '--------------------- Dim iNames() As String '--------------------- 'declaring variables to store counter _ 'and elements from the range. '---------------------- Dim iCount As Integer Dim iElement As Integer '---------------------- 'get the last row number to decide the _ 'number of elements for the array. '------------------------------------ iCount = Range("A1").End(xlDown).Row '------------------------------------ 're-defining the elements for the array. '------------------- ReDim iNames(iCount) '------------------- 'using a for loop to add elements in the array 'from the range starting from cell A1 '-------------------------------------------------- For iElement = 1 To iCount iNames(iElement - 1) = Cells(iElement, 1).Value Next iElement '-------------------------------------------------- 'print all the elements from the 'to the immediate window '-------------------- Debug.Print iNames(0) Debug.Print iNames(1) Debug.Print iNames(2) '--------------------

Давайте разберем этот код шаг за шагом.

  1. На первом этапе вы объявили массив с именем «myArray».
  2. После этого у вас есть две переменные для сохранения значений счетчика для цикла, которые вам нужно будет использовать позже в коде, чтобы получить значения из диапазона и добавить эти значения в качестве элементов в массив.
  3. Затем у вас есть строка кода для получения последней строки диапазона, которая поможет вам узнать, какие элементы нужно добавить в массив.
  4. На четвертом шаге вы использовали оператор ReDim для переопределения элементов массива, используя номер последней строки, полученный на предыдущем шаге.
  5. Тогда у вас есть FOR LOOP (For Next), который проходит по диапазону, начиная с ячейки A1, берет оттуда значения и добавляет их как элементы в массив один за другим.
  6. В конце концов, у вас есть оператор Debug.Print для печати всех элементов в ближайшем окне .

И когда я добавляю новое значение в диапазон и снова запускаю код, он автоматически добавляет этот элемент в массив и печатает его в ближайшем окне .