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. Pomoću nizova možemo pohraniti više od jedne vrijednosti u istu varijablu koju smo definirali. Poput toga kako varijablu deklariramo pomoću riječi "Dim", tako moramo i ime polja deklarirati 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 () Zatamni 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 u njemu, kao što je dolje.

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. Donju i gornju vrijednost nećemo odlučiti već unaprijed; nego samo definiramo ime 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“, vrijedi, a veličina koju smo deklarirali pomoću „ReDim“ postaje nova veličina polja.

Primjeri upotrebe VBA Redim izjave

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 je niz jednak riječi "Dobrodošli", drugi niz je jednak riječi "do", a treći je niz jednak 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 se imenu polja dodijele vrijednosti, u bilo kojem trenutku postupka možemo promijeniti veličinu pomoću riječi "ReDim Preserve".

Pretpostavimo da ste već prijavili ime niza i dodijelili vrijednosti tim imenima niza poput donjeg.

Sada biste željeli povećati duljinu niza za 2, tj. 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 () Kao niz ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Raspon "Znak 1" ("A1"). Vrijednost = Raspon MyArray (1) ("B1"). Vrijednost = Raspon MyArray (2) ("C1"). Vrijednost = Raspon MyArray (3) ("D1"). Vrijednost = MyArray (4) Kraj Sub

Sada polju možemo dodijeliti još dvije vrijednosti.

Kodirati:

Sub ReDim_Example2 () Dim MyArray () Kao niz ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Raspon "Znak 1" ("A1"). Vrijednost = Raspon MyArray (1) ("B1"). Vrijednost = Raspon MyArray (2) ("C1"). Vrijednost = Raspon MyArray (3) ("D1"). Vrijednost = MyArray (4) Kraj Sub

Sada te vrijednosti pohranite u ćelije.

Kodirati:

Sub ReDim_Example2 () Dim MyArray () Kao niz ReDim MyArray (3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Raspon "Znak 1" ("A1"). Vrijednost = Raspon MyArray (1) ("B1"). Vrijednost = Raspon MyArray (2) ("C1"). Vrijednost = Raspon MyArray (3) ("D1"). Vrijednost = MyArray (4) Kraj Sub

Sada pokrenite makronaredbu i pogledajte što će se dogoditi.

Tako smo dobili novu riječ u ćeliji D1.

Razlog zašto trebamo upotrijebiti riječ "sačuvati" jer bi niz trebao pamtiti stare vrijednosti niza u postupku.

Onog trenutka kada zanemarite riječ "sačuvati", ona se neće sjećati starih vrijednosti.

Stvari koje treba ovdje zapamtiti

  • ReDim može sadržavati samo zadnju vrijednost niza, a ne mnogo vrijednosti. Na primjer, ne možemo koristiti ovaj kod "ReDim Preserve MyArray (4 do 5)". Ovo će baciti pogrešku.
  • Ne možemo preoblikovati statičke nizove. Onog trenutka kada dodijelite veličinu polja unutar zagrade, on postaje statički niz.
  • Korištenjem ReDim-a ne možemo promijeniti vrstu podataka. Niz može sadržavati bilo koju vrstu podataka koju smo dodijelili tijekom deklariranja niza.

Zanimljivi članci...