Ovaj će vodič pokazati kako koristiti dinamičke nizove (redim i redim sačuvati) u VBA -i.
Dinamički niz
Dinamički nizovi su nizovi koji mogu mijenjati veličine (za razliku od statički nizovi, koji su statični).
Za deklariranje dinamičkog niza deklarirate ga, ali izostavljate veličinu polja:
1 | Dim strNames () Kao niz |
Zatim, prije nego što možete dodijeliti vrijednosti svom nizu, morate upotrijebiti ReDim izraz da postavite niz na željenu veličinu:
1 | ReDim strNames (1 do 3) |
Sada, kad god želite promijeniti veličinu polja, jednostavno upotrijebite ReDim (ili ReDim Preserve o čemu ćemo dolje saznati).
Nizovi dinamičkih varijanti
Napomena: Varijantni nizovi su malo drugačiji. S varijantnim nizovima ne morate postavljati veličinu polja s ReDimom prije dodjeljivanja vrijednosti.
12345678 | Sub TestArray ()'deklarirati varijabluDim varNames () Kao varijanta'popunite nizvarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'vratiti vrijednostiMsgBox Pridruživanje (varNames, ",")Kraj podm |
Redim vs. Redim Preserve
The ReDim naredba mijenja veličinu polja, raščišćavanje sve postojeće vrijednosti.
The Rezervat ReDim naredba mijenja veličinu polja, čuvanje („Očuvanje“) svih postojećih vrijednosti.
Korištenje ReDim -a
U praksi, promjena veličine niza pomoću ReDima izgleda ovako:
123456789101112 | Sub TestReDim ()'deklarirati niz znakovaDim strNames () Kao niz'promijenite veličinu niza niza da biste mogli držati 3 vrijednostiReDim strNames (1 do 3)'popunite niz s 3 imenastrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'prikazati rezultat u neposrednom prozoruDebug.Print Join (strNames, vbCrLf)Kraj podm |
Korištenje ReDim Preserve
U ovom primjeru koristit ćemo ReDim za postavljanje početnog dinamičkog niza, a zatim ReDim Preserve za promjenu veličine polja, čuvanje izvorne vrijednosti:
1234567891011121314151617 | Sub TestReDim ()'deklarirati niz znakovaDim strNames () Kao niz'promijenite veličinu niza niza da biste mogli držati 3 vrijednostiReDim strNames (1 do 3)'popunite nizstrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'prikazati rezultat u neposrednom prozoruDebug.Print Join (strNames, vbCrLf)'Redim, ali sačuvajte podatkeReDim Očuvaj strNames (1 do 4)strNames (4) = "Fred"'prikazati rezultat u neposrednom prozoruDebug.Print Join (strNames, vbCrLf)Kraj podm |
Ako ne koristite SAČUVATI izjavom, izgubili biste podatke koji su se prethodno nalazili u nizu.
U neposrednom prozoru iznad niz je naseljavao Mel, Stevea i Boba. Kad je ponovno proglašena, uklonila je te vrijednosti i umjesto toga vratila 3 prazne vrijednosti, a zatim vrijednost 'Fred'. To je zbog SAČUVATI izjava je izostavljena.