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) Като низ в края Sub

Тук MyArray е името на масива, който може да съдържа стойността от 1 до 5. MyArray може да съдържа 5 различни резултата в него, като този по-долу.

Код:

Sub ReDim_Example1 () Dim MyArray (1 до 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Имате" MyArray (5) = "Хубав ден" Край Sub

Динамичен масив с ReDim Statement

Но в динамичния масив това не е така. Няма да решим долната и горната стойност много предварително; по-скоро просто дефинираме името на масива и присвояваме тип данни.

Sub ReDim_Example1 () Dim MyArray () Като низ в края Sub

За да направим името на масива динамично, първо трябва да го декларираме с думата „Dim“, но не решаваме размера на масива много предварително. Просто назоваваме масив с празни стойности вътре в скобата (). Когато масивът не включва размер, тогава той се третира като динамичен масив.

Затъмнете MyArray () като низ

В момента, в който споменете размера на масива в скобата, той се превръща в статичен масив. Затъмнете MyArray (1 до 5) като низ

В динамичния масив винаги променяме размера на масива, като използваме думата „ReDim“ в следващия ред на кода.

ReDim MyArray (1 до 6) като низ

Всяка стойност, съхранена в името на масива в предишните стъпки, т.е. използвайки израза “Dim”, е нула и размерът, който декларирахме с помощта на “ReDim”, става новият размер на масива.

Примери за използване на VBA Redim Statement

Пример # 1

Обърнете внимание на примера за практическо използване на оператора „ReDim“. Следвайте стъпките по-долу, за да приложите „ReDim“.

Стъпка 1: Създайте първо име на макрос.

Стъпка 2: Декларирайте името на масива като низ.

Код:

Sub ReDim_Example1 () Dim MyArray () Като низ в края 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) = "Добре дошли" MyArray (2) = "до" MyArray (3) = "VBA" End Sub

И така, първият масив е равен на думата „Добре дошли“, вторият масив е равен на думата „до“, а третият масив е равен на думата „VBA“.

Стъпка 5: Сега съхранявайте тези стойности на масива в клетки.

Код:

Sub ReDim_Example1 () Dim MyArray () Като низ ReDim MyArray (1 до 3) MyArray (1) = "Добре дошли" MyArray (2) = "до" MyArray (3) = "VBA" Обхват ("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 () Като низ ReDim MyArray (3) MyArray (1) = "Добре дошли" MyArray (2) = "до" MyArray (3) = "VBA" ReDim Запазване на MyArray (4) MyArray (4) = "Диапазон" Символ 1 "(" A1 "). Стойност = MyArray (1) Обхват (" B1 "). Стойност = MyArray (2) Обхват (" C1 "). Стойност = MyArray (3) Обхват (" D1 "). Стойност = MyArray (4) End Sub

Сега можем да присвоим още две стойности на масива.

Код:

Sub ReDim_Example2 () Dim MyArray () Като низ ReDim MyArray (3) MyArray (1) = "Добре дошли" MyArray (2) = "до" MyArray (3) = "VBA" ReDim Запазване на MyArray (4) MyArray (4) = "Диапазон" Символ 1 "(" A1 "). Стойност = MyArray (1) Обхват (" B1 "). Стойност = MyArray (2) Обхват (" C1 "). Стойност = MyArray (3) Обхват (" D1 "). Стойност = MyArray (4) End Sub

Сега съхранявайте тези стойности в клетки.

Код:

Sub ReDim_Example2 () Dim MyArray () Като низ ReDim MyArray (3) MyArray (1) = "Добре дошли" MyArray (2) = "до" MyArray (3) = "VBA" ReDim Запазване на MyArray (4) MyArray (4) = "Диапазон" Символ 1 "(" A1 "). Стойност = MyArray (1) Обхват (" B1 "). Стойност = MyArray (2) Обхват (" C1 "). Стойност = MyArray (3) Обхват (" D1 "). Стойност = MyArray (4) End Sub

Сега стартирайте макроса и вижте какво се случва.

Така че получихме новата дума в клетката D1.

Причината, поради която трябва да използваме думата „запазване“, тъй като масивът трябва да помни старите стойности на масива в процедурата.

В момента, в който пренебрегнете думата „запази“, тя няма да запомни стари ценности.

Неща, които трябва да запомните тук

  • ReDim може да съдържа само последната стойност на масива, но не и многото стойности. Например не можем да използваме този код „ReDim Preserve MyArray (4 до 5)“. Това ще хвърли грешката.
  • Не можем да ReDim статични масиви. В момента, в който зададете размера на масива в скобата, той се превръща в статичен масив.
  • Използвайки ReDim, не можем да променим типа данни. Масивът може да съдържа какъвто и да е типът данни, който сме задали, докато декларираме масива.

Интересни статии...