VBA ReDim | Upravljajte dinamičkim nizovima pomoću VBA ReDim Preserve

Izjava Excel VBA ReDim

Izraz VBA Redim sličan je iskazu dim, ali razlika je u tome što se koristi za pohranu ili dodjelu više prostora za pohranu ili smanjenje prostora za pohranu koji varijabla ili niz ima sa sobom, sada postoje dva važna aspekta koja se koriste uz izraz Preserve, ako se sačuva koristi s ovom izjavom, tada stvara novi niz različite veličine, a ako se ne koristi s ovom izjavom, onda samo mijenja veličinu polja trenutne varijable.

Nizovi su važan dio VBA kodiranja. Korištenjem nizova možemo pohraniti više od jedne vrijednosti u istu varijablu koju smo definirali. Kao i kako deklariramo varijablu pomoću riječi "Dim", slično tome moramo deklarirati i ime niza koristeći "Dim".

Da bismo deklarirali ime niza, prvo moramo identificirati vrstu niza koju ćemo definirati. U nizovima imamo 5 vrsta.

  1. Statički niz
  2. Dinamički niz
  3. Jednodimenzionalni niz
  4. Dvodimenzionalni niz
  5. Višedimenzionalni niz

U statičkom nizu u Excelu donju ćemo vrijednost i gornju vrijednost niza odlučiti unaprijed dok deklariramo varijablu. Na primjer, pogledajte donji primjer.

Kodirati:

 Sub ReDim_Example1 () Dim MyArray (1 do 5) Kao kraj niza Sub 

Ovdje je MyArray naziv niza koji može sadržavati vrijednost od 1 do 5. MyArray može sadržavati 5 različitih rezultata, poput donjeg.

Kodirati:

 Sub ReDim_Example1 () Zatamni MyArray (1 do 5) Kao niz MyArray (1) = "Bok" MyArray (2) = "Dobro" MyArray (3) = "Jutro" MyArray (4) = "Imaj" MyArray (5) = "Lijep dan" Kraj Sub 

Dinamički niz s izjavom ReDim

Ali u Dynamic array to nije slučaj, nećemo unaprijed odlučiti donju i gornju vrijednost, već samo definiramo naziv niza i dodijelimo tip podataka.

 Sub ReDim_Example1 () Dim MyArray () Kao kraj niza Sub 

Da bismo naziv polja učinili dinamičnim, prvo ga moramo deklarirati riječju "Dim", ali ne odlučujemo veličinu niza unaprijed. Samo imenujemo niz s praznim vrijednostima unutar zagrade (). Kada niz ne uključuje veličinu, tada se tretira kao dinamički niz.

Zatamni MyArray () kao niz

Onog trenutka kada spomenete veličinu polja unutar zagrade, ona postaje statički niz. Zatamni MyArray (1 do 5) kao niz

U dinamičkom nizu uvijek mijenjamo veličinu polja pomoću riječi "ReDim" u sljedećem retku koda.

ReDim MyArray (1 do 6) kao niz

Bilo koja vrijednost pohranjena u ime niza u prethodnim koracima, tj. Pomoću izraza „Dim“ stoji nula, a veličina koju smo deklarirali pomoću „ReDim“ postaje nova veličina polja.

Primjeri upotrebe VBA Redim izjave

Ovaj VBA ReDim Excel predložak možete preuzeti ovdje - VBA ReDim Excel Predložak

Primjer # 1

Pogledajte primjer praktične upotrebe izjave "ReDim". Slijedite korake u nastavku da biste primijenili "ReDim".

Korak 1: Prvo stvorite ime makronaredbe.

Korak 2: Deklarirajte naziv niza kao niz.

Kodirati:

 Sub ReDim_Example1 () Dim MyArray () Kao kraj niza Sub 

Korak 3: Sada upotrijebite riječ "Redim" i dodijelite veličinu niza.

Kodirati:

 Sub ReDim_Example1 () Dim MyArray () Kao niz ReDim MyArray (1 do 3) Kraj Sub 

Korak 4: Dakle, sada niz polja "MyArray" ovdje može sadržavati do 3 vrijednosti. Dodijelite vrijednost ovim 3 polja poput donjeg.

Kodirati:

 Sub ReDim_Example1 () Dim MyArray () Kao niz ReDim MyArray (1 do 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" End Sub 

Dakle, prvi niz jednak je riječi "Dobrodošli", drugi niz je jednak riječi "do", a treći niz jednak je riječi "VBA".

Korak 5: Sada te vrijednosti polja pohranite u ćelije.

Kodirati:

 Sub ReDim_Example1 () Dim MyArray () Kao niz ReDim MyArray (1 do 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = Raspon MyArray (1) ("B1"). Vrijednost = MyArray (2) Raspon ("C1"). Value = MyArray (3) Kraj Sub 

Korak 6: Ako pokrenete ovaj kôd, trebali bismo imati ove vrijednosti u ćelijama A1, B1 i C1.

Primjer # 2 - Promijenite veličinu polja, sjećajući se starih vrijednosti.

Jednom kada imenu polja dodijelimo vrijednosti, također možemo promijeniti veličinu u bilo kojem trenutku postupka pomoću riječi "ReDim Preserve".

Pretpostavimo da ste već proglasili ime niza i dodijelili ste im vrijednosti kao što je dolje.

Sada biste željeli povećati duljinu niza za 2, odnosno 5. U ovom slučaju, možemo upotrijebiti riječ VBA "ReDim Preserve" za promjenu veličine duljine niza kako bismo zapamtili i stare vrijednosti.

Kodirati:

 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.