VBA ReDim | Обробляйте динамічні масиви за допомогою VBA ReDim Preserve

Заява Excel VBA ReDim

Оператор VBA Redim схожий на оператор dim, але відмінність полягає в тому, що він використовується для зберігання або виділення більше місця для зберігання або зменшення місця для зберігання змінної чи масиву, тепер є два важливі аспекти, що використовуються з оператором Preserve, якщо з цим оператором використовується збереження, то він створює новий масив з різним розміром, і якщо збереження не використовується з цим твердженням, тоді він просто змінює розмір масиву поточної змінної.

Масиви є важливою частиною кодування VBA. Використовуючи масиви, ми можемо зберігати більше одного значення в тій самій змінній, яку ми визначили. Подібно до того, як ми оголошуємо змінну, використовуючи слово "Dim", аналогічно нам потрібно оголосити ім'я масиву, також використовуючи "Dim".

Для того, щоб оголосити ім'я масиву, нам потрібно спочатку визначити тип масиву, який ми збираємось визначити. У масивах ми маємо 5 типів.

  1. Статичний масив
  2. Динамічний масив
  3. Одновимірний масив
  4. Двовимірний масив
  5. Багатовимірний масив

У статичному масиві в Excel ми заздалегідь визначимо нижнє значення і верхнє значення масиву, оголошуючи змінну. Наприклад, подивіться на приклад нижче.

Код:

 Sub ReDim_Example1 () Dim MyArray (від 1 до 5) як рядок End Sub 

Тут MyArray - це назва масиву, який може містити значення від 1 до 5. MyArray може містити в ньому 5 різних результатів, як показано нижче.

Код:

 Sub ReDim_Example1 () Dim MyArray (1-5) Як String MyArray (1) = "Привіт" MyArray (2) = "Хороший" MyArray (3) = "Ранок" MyArray (4) = "Є" MyArray (5) = "Приємний день" Кінець Sub 

Динамічний масив із випискою ReDim

Але в динамічному масиві це не так, ми не будемо визначати нижнє значення і верхнє значення заздалегідь, а просто визначаємо ім'я масиву і призначаємо тип даних.

 Sub ReDim_Example1 () Dim MyArray () як рядок End Sub 

Для того, щоб зробити ім'я масиву динамічним, нам потрібно спочатку оголосити його словом “Dim”, але не заздалегідь визначати розмір масиву. Ми просто називаємо масив з порожніми значеннями всередині дужок (). Коли масив не включає розмір, він трактується як динамічний масив.

Приглушити MyArray () як рядок

Як тільки ви згадаєте розмір масиву всередині дужок, він стає статичним масивом. Затемнити MyArray (від 1 до 5) як рядок

У динамічному масиві ми завжди змінюємо розмір масиву, використовуючи слово “ReDim” у наступному рядку коду.

ReDim MyArray (від 1 до 6) як рядок

Будь-яке значення, збережене в назві масиву на попередніх кроках, тобто за допомогою оператора “Dim”, має нульове значення, і розмір, який ми оголосили за допомогою “ReDim”, стає новим розміром масиву.

Приклади використання VBA Redim Statement

Завантажити цей шаблон VBA ReDim Excel можна тут - Шаблон VBA ReDim Excel

Приклад №1

Погляньте на приклад практичного використання оператора “ReDim”. Дотримуйтесь наведених нижче кроків, щоб застосувати «ReDim».

Крок 1: Спершу створіть ім’я макросу.

Крок 2: Оголосіть ім'я масиву як рядок.

Код:

 Sub ReDim_Example1 () Dim MyArray () як рядок End Sub 

Крок 3: Тепер використовуйте слово «Redim» і призначте розмір масиву.

Код:

 Sub ReDim_Example1 () Dim MyArray () Як рядок ReDim MyArray (1 до 3) End Sub 

Крок 4: Отже, тепер ім’я масиву “MyArray” може містити тут до 3 значень. Призначте значення цим 3 масивам, як показано нижче.

Код:

 Sub ReDim_Example1 () Dim MyArray () Як рядок ReDim MyArray (1-3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub 

Отже, перший масив дорівнює слову “Ласкаво просимо”, другий масив дорівнює слову “до”, а третій масив дорівнює слову “VBA”.

Крок 5: Тепер збережіть ці значення масиву в комірках.

Код:

 Sub ReDim_Example1 () Dim MyArray () Як рядок ReDim MyArray (1-3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Range ("B1"). Value = MyArray (2) Range ("C1"). Value = MyArray (3) End Sub 

Крок 6: Якщо ви запускаєте цей код, ми повинні мати ці значення відповідно у клітинках A1, B1 та C1.

Приклад №2 - Змініть розмір масиву, пам’ятаючи старі значення.

Після того, як імені масиву присвоєно значення, ми також можемо змінити розмір у будь-який момент часу процедури, використовуючи слово “ReDim Preserve”.

Припустимо, ви вже оголосили ім'я масиву та присвоїли значення цим іменам масиву, як показано нижче.

Тепер ви хотіли б збільшити довжину масиву на 2, тобто 5. У цьому випадку ми можемо використовувати слово VBA “ReDim Preserve”, щоб змінити розмір довжини масиву, щоб також запам'ятати старі значення.

Код:

 Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub 

Now we can assign two more values to the array.

Code:

 Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub 

Now store these values in cells.

Code:

 Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub 

Now run the macro and see what happens

So we got the new word in the D1 cell.

The reason why we need to use the word “preserve” because array should remember the old array values in the procedure.

The moment you ignore the word “preserve” it will not remember old values.

Things to Remember Here

  • ReDim can only hold the last value of the array, not the many values. For example, we cannot use this code “ReDim Preserve MyArray(4 to 5)”, this will throw the error.
  • We cannot ReDim static arrays. The moment you assign the size of the array inside the parenthesis it becomes a static array.
  • Using ReDim we cannot change the data type. The array can hold whatever the data type we have assigned while declaring the array.