VBA ReDim | Z dinamičnimi nizi ravnajte z uporabo VBA ReDim Preserve

Izjava Excel VBA ReDim

Stavek VBA Redim je podoben stavku dim, vendar je razlika v tem, da se uporablja za shranjevanje ali dodelitev več prostora za shranjevanje ali zmanjšanje prostora za shranjevanje, ki ga ima spremenljivka ali matrika, zdaj pa sta z izjavo ohranjena dva pomembna vidika, če se s tem stavkom uporablja »save«, potem ustvari novo matriko z drugačno velikostjo in če se s tem stavkom ne uporablja, potem samo spremeni velikost polja trenutne spremenljivke.

Polja so pomemben del kodiranja VBA. Z uporabo nizov lahko v isto spremenljivko, ki smo jo definirali, shranimo več kot eno vrednost. Tako kot to, kako spremenljivko razglasimo z besedo "Dim", moramo tudi ime matrice razglasiti z uporabo "Dim".

Za razglasitev imena polja moramo najprej določiti vrsto matrike, ki jo bomo definirali. V nizih imamo 5 vrst.

  1. Statična matrika
  2. Dinamično polje
  3. Enodimenzionalna matrika
  4. Dvodimenzionalna matrika
  5. Večdimenzionalno polje

V statičnem polju v Excelu bomo vnaprej določili spodnjo vrednost in zgornjo vrednost polja, medtem ko bomo deklarirali spremenljivko. Na primer, poglejte spodnji primer.

Koda:

 Sub ReDim_Example1 () Dim MyArray (1 do 5) Kot niz na koncu Sub 

Tu je MyArray ime polja, ki lahko vsebuje vrednost od 1 do 5. MyArray lahko vsebuje 5 različnih rezultatov, kot je spodnji.

Koda:

 Sub ReDim_Example1 () Dim MyArray (1 do 5) Kot niz MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have" MyArray (5) = "Lep dan" Konec Sub 

Dinamično polje z izjavo ReDim

Toda v Dynamic array temu ni tako, za spodnjo in zgornjo vrednost se ne bomo odločili vnaprej, temveč bomo samo določili ime matrice in dodelili tip podatkov.

 Sub ReDim_Example1 () Dim MyArray () Kot niz na koncu Sub 

Da bo ime polja dinamično, ga moramo najprej prijaviti z besedo "Dim", vendar se velikosti polja ne odločimo vnaprej. Samo matriko poimenujemo s praznimi vrednostmi v oklepaju (). Če polje ne vključuje velikosti, se obravnava kot dinamično polje.

Zatemni MyArray () kot niz

Ko omenite velikost matrike v oklepaju, ta postane statična matrika. Zatemni MyArray (1 do 5) kot niz

V dinamičnem polju vedno spremenimo velikost polja z uporabo besede »ReDim« v naslednji vrstici kode.

ReDim MyArray (1 do 6) kot niz

Vsaka vrednost, shranjena v imenu matrike v prejšnjih korakih, tj. Z uporabo stavka "Dim", je nična in velikost, ki smo jo prijavili z "ReDim", postane nova velikost matrike.

Primeri uporabe izjave VBA Redim

To predlogo VBA ReDim Excel lahko prenesete tukaj - Predloga VBA ReDim Excel

Primer # 1

Oglejte si primer praktične uporabe izjave "ReDim". Sledite spodnjim korakom, da uporabite “ReDim”.

1. korak: Najprej ustvarite ime makra.

2. korak: Označite ime polja kot niz.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Kot niz na koncu Sub 

3. korak: Zdaj uporabite besedo "Redim" in določite velikost matrike.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Kot niz ReDim MyArray (1 do 3) End Sub 

4. korak: Zdaj lahko ime polja »MyArray« tukaj vsebuje do 3 vrednosti. Tem trem nizom dodelite vrednost, kot je spodnja.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Kot niz ReDim MyArray (1 do 3) MyArray (1) = "Dobrodošli" MyArray (2) = "do" MyArray (3) = "VBA" End Sub 

Torej, prvo polje je enako besedi "Dobrodošli", drugo polje je enako besedi "do", tretje polje pa je enako besedi "VBA".

5. korak: Zdaj shranite te vrednosti matrike v celice.

Koda:

 Sub ReDim_Example1 () Dim MyArray () Kot niz ReDim MyArray (1 do 3) MyArray (1) = "Dobrodošli" MyArray (2) = "do" MyArray (3) = "VBA" Obseg ("A1"). Value = Obseg MyArray (1) ("B1"). Value = MyArray (2) Obseg ("C1"). Value = MyArray (3) End Sub 

6. korak: Če zaženete to kodo, bi morali imeti te vrednosti v celicah A1, B1 in C1.

2. primer - spremenite velikost matrike, medtem ko se spominjate starih vrednosti.

Ko imenu matrike dodelijo vrednosti, lahko kadar koli v postopku spremenimo velikost z besedo "ReDim Preserve".

Predpostavimo, da ste že imenovali ime matrike in jim dodelili vrednosti, kot je spodnje.

Zdaj bi radi povečali dolžino polja za 2, tj. 5. V tem primeru lahko z besedo VBA "ReDim Preserve" spremenimo velikost dolžine polja, da si zapomnimo tudi stare vrednosti.

Koda:

 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.