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 različ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 pri razglasitvi spremenljivke z besedo "Dim", moramo tudi s pomočjo "Dim" razglasiti ime polja.

Za razglasitev imena polja moramo najprej določiti vrsto polja, ki ga 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 matrike, 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 matriki temu ni tako. Za spodnjo in zgornjo vrednost se ne bomo odločili vnaprej; namesto tega samo definiramo ime matrike in dodelimo podatkovni tip.

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čite vnaprej. Samo matriko poimenujemo s praznimi vrednostmi v oklepaju (). Če matrika ne vključuje velikosti, se obravnava kot dinamična matrika.

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 polja v prejšnjih korakih, tj. Z uporabo stavka "Dim", je nična in velikost, ki smo jo prijavili z uporabo "ReDim", postane nova velikost matrike.

Primeri uporabe izjave VBA Redim

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) Konec Sub

4. korak: Zdaj lahko ime polja »MyArray« tukaj vsebuje do 3 vrednosti. Tem 3 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 so imenu matrike dodeljene vrednosti, lahko kadar koli v postopku tudi spremenimo velikost z besedo »ReDim Preserve«.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

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 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.

Razlog, zakaj moramo uporabiti besedo "ohrani", ker bi se moralo polje zapomniti stare vrednosti polja v postopku.

V trenutku, ko prezrete besedo »ohrani«, se ne bo več spomnil starih vrednot.

Tukaj si je treba zapomniti

  • ReDim lahko vsebuje samo zadnjo vrednost polja, ne pa tudi veliko vrednosti. Te kode na primer ne moremo uporabiti »ReDim Preserve MyArray (4 do 5)«. To bo povzročilo napako.
  • Ne moremo ReDim statičnih nizov. Ko dodelite velikost matrike v oklepaju, ta postane statična matrika.
  • Z uporabo ReDim podatkovnega tipa ne moremo spremeniti. Polje lahko vsebuje kateri koli podatkovni tip, ki smo ga dodelili med razglasitvijo polja.

Zanimive Članki...