Изявление на Excel VBA ReDim
Операторът VBA Redim е подобен на оператора dim, но разликата е, че се използва за съхраняване или разпределяне на повече място за съхранение или намаляване на пространството за съхранение, което променлива или масив има със себе си, сега има два важни аспекта, използвани с оператора е Preserve, ако запазването се използва с този оператор, тогава той създава нов масив с различен размер и ако запазването не се използва с този израз, то просто променя размера на масива на текущата променлива.
Масивите са важна част от VBA кодирането. Използвайки масиви, можем да съхраняваме повече от една стойност в същата променлива, която дефинирахме. Подобно на това как декларираме променливата, използвайки думата "Dim", по същия начин трябва да декларираме името на масива, като използваме и "Dim".
За да декларираме името на масива, първо трябва да идентифицираме вида масив, който ще дефинираме. В масивите имаме 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
Можете да изтеглите този шаблон на VBA ReDim Excel тук - VBA ReDim Excel шаблонПример # 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() 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.