VBA - Deklarirajte (zatamni), kreirajte i inicijalizirajte varijablu niza

Ovaj će vodič pokazati kako deklarirati (zatamniti), stvoriti i pokrenuti varijable polja u VBA -i

Što je varijabla polja VBA?

Varijabla polja VBA može se smatrati grupom varijabli, pohranjenih pod istim imenom i s istim tipom podataka. Niz može pohraniti tekst, brojeve ili objekte.

Na element u nizu upućujete koristeći njegov indeksni broj.

Varijablu niza možete deklarirati na isti način na koji biste deklarirali bilo koju drugu varijablu pomoću ključne riječi Dim, Static, Public ili Private.

Statički nizovi

Postoje 2 vrste polja - statički i dinamički. Statički niz se deklarira s navedenom veličinom kada ga prvotno deklarirate. Također se naziva i fiksni niz.

1 Zatamnite intA (4) kao cijeli broj

Gornji niz je deklariran pomoću izraza Dim na razini procedure ili modula, a veličina niza je 5 jer nismo deklarirali LBound vrijednost niza.

Ne, to nije pravopisna greška! Veličina polja je 5, unatoč unosu 4 u niz. To je zato što indeksi polja automatski počinju od nule.

Indeksi niza

Indeksi niza automatski počinju od nule, osim ako Baza mogućnosti 1 je deklarirano pri vrhu vašeg kodnog modula.

Ako Baza mogućnosti 1 je deklarirano, tada će nizovi automatski početi s 1.

Međutim, smatram da je deklariranje varijabli na takav način problematično. Recenzenti koda možda nisu svjesni da nizovi počinju od nule ili deklaracije Option Base 1

Umjesto toga, radije izričito deklariram početnu i završnu poziciju niza:

1 Zatamnite intA (2 do 5) kao cijeli broj

Primijetite da kada to učinite, možete pokrenuti niz s bilo kojeg broja (ne samo 1 ili 0).

Dinamički nizovi

Varijabla Dynamic Array je niz čija se veličina može promijeniti tijekom izvođenja. Deklarirate dinamičke varijable bez veličine.

1 Zatamnite intA () kao cijeli broj

Naredbu ReDim možete koristiti za navođenje veličine niza nakon što je niz kreiran.

1 ReDim intA (2)

Dinamičko polje možete promijeniti u bilo kojem trenutku. Međutim, kada se koristi ReDim izjava, sve postojeće vrijednosti se brišu. Za očuvanje postojećih vrijednosti niza koristite Rezervat ReDim umjesto toga.

1 Očuvanje ReDim intA (2)

Možete deklarirati dinamičko polje na razini procedure, modula ili globalno, ali možete koristiti samo izraz ReDim unutar procedure.

Nizovi varijanti

Varijantni nizovi su dinamički nizovi s kojima je lakše raditi.

1 Dim varNames ()

Uočite da ne morate navesti vrstu podataka (pretpostavlja se da je varijanta) ili veličinu polja.

Kao što ćemo vidjeti u nastavku, možete inicijalizirati varijantne nizove pomoću funkcije Array (nema potrebe za promjenom veličine polja prvo)!

Deklarirajte modul i javne nizove

Kao što je gore prikazano, nizovi se mogu deklarirati unutar postupaka, za upotrebu u tom postupku:

1234 Podstatički niz ()'deklarirajte niz s LBound vrijednošću 1 i UBound vrijednosti 4Dim IntA (1 do 4) kao cijeli brojKraj podm

No, oni se također mogu deklarirati na razini modula ili na globalnoj razini.

1234567 Opcija Eksplicitno'deklarirajte niz s LBound vrijednošću 1 i UBound vrijednosti 4Dim IntA (1 do 4) kao cijeli brojPodstatički niz ()Kraj podm

U ovom primjeru varijabla niza može se pozvati bilo gdje unutar ovog kodnog modula. Umjesto toga, možete deklarirati javni niz koji se može koristiti tijekom cijelog vašeg VBA projekta (pogledajte sljedeći odjeljak).

Deklariranje javnog niza

Deklarirate javni statički niz kao što biste deklarirali javnu varijablu.

1 Javni strNames (3) kao String

Ova deklaracija trebala bi se nalaziti na vrhu vašeg modula, ispod opcije Explicit. Zatim se može koristiti tijekom cijelog vašeg VBA projekta u bilo kojem modulu ili postupku.

Ako deklarirate Polje na vrhu modula, ali s ključnom riječi Dim, tada je uporaba tog niza ograničena na taj pojedinačni modul. Pokušaj korištenja niza u zasebnom modulu rezultirao bi pogreškom.

Inicijalizirajte nizove

Statičkom nizu možete dodijeliti vrijednosti na sljedeći način.

1234567891011 Podstatički niz ()'deklarirajte niz s LBound vrijednošću 1 i UBound vrijednosti 4Dim IntA (1 do 4) kao cijeli broj'inicijalizira nizIntA (1) = 10IntA (2) = 20IntA (3) = 30IntA (4) = 40'prikaži rezultat položaja 2 niza u neposrednom prozoruDebug.Print IntA (2)Kraj podm

Ako pokrenete gornji postupak, vrijednost 20 bit će prikazana u neposrednom prozoru.

Također možete dodijeliti vrijednosti dinamičkom nizu na isti način

12345678910111213 Sub DynamicArray ()'deklariraju dinamički niz, ali izostavljaju vezane vrijednostiDim IntA () kao cijeli broj'inicijalizira nizReDim IntA (1 do 4)IntA (1) = 10IntA (2) = 20IntA (3) = 30IntA (4) = 40'prikaži rezultat položaja 2 niza u neposrednom prozoruIspravljanje ispisaIntA (2)Kraj podm

Funkcija niza

Međutim, samo s varijantnim nizom, možete koristiti funkciju niza što može biti lakše od korištenja standardne metode.

12 'popunite nizintA () = Polje (10, 20, 30, 40)

Popuni niz s petljom

Nizove možete popuniti i petljanjem kroz niz ćelija u Excelu

1234567891011121314151617 Pod testDynamicArrayFromExcel ()'deklarirajte nizDim strNames () Kao niz'deklarirajte cijeli broj za brojanje redaka u rasponuDim n kao cijeli broj'deklarirati cijeli broj za petljuDim i Kao cijeli broj'broji retke u rasponun = Raspon ("A1", Raspon ("A1"). Kraj (xlDown)). Rows.Count'redumirajte niz na količinu redaka u rasponu.ReDim strNames (n)Za i = 0 To nstrNames (i) = Raspon ("A1"). Odmak (i ​​+ 1, 0)Sljedeći i'prikazuju vrijednosti u nizuMsgBox Pridruživanje (strNames ())Kraj podm

Ponovno inicijalizirajte nizove

Možete ponovno inicijalizirati niz u bilo kojoj fazi koda, ali ćete tada izgubiti izvornu vrijednost koja se nalazi na toj poziciji u vašem nizu.

1234567891011121314 Podstatički niz ()'deklarirajte niz s LBound vrijednošću 1 i UBound vrijednosti 4Dim IntA (1 do 4) kao cijeli broj'inicijalizira nizIntA (1) = 10IntA (2) = 20IntA (3) = 30IntA (4) = 40'prikaži rezultat položaja 2 niza u neposrednom prozoruDebug.Print IntA (2)'ponovno inicijalizirajte nizintA (2) = 200Debug.Print IntA (2)Kraj podm

U gornjem primjeru Statički niz zadržat će sve vrijednosti, osim vrijednosti na poziciji 2 - ta će se vrijednost promijeniti na 200.

Korištenje ReDim -a

Ako koristite dinamički niz, izraz ReDim koristi se za postavljanje veličine vašeg niza. Naredbu ReDim možete kasnije koristiti u svom kodu za promjenu veličine niza koliko god puta trebate. Redak koda u nastavku ponovno će inicijalizirati intA niz kako bi bio veličine 2 (Upamtite - indeks niza počinje na 0!)

1 ReDim intA (1) kao cijeli broj

Dakle, kôd uključujući izjavu ReDim izgledao bi kao donji primjer.

1234567891011121314151617 Pod testDynamicArray ()'deklarirajte nizDim intA () Kao cijeli brojReDim intA (2)'popunite niz brojevimaintA (0) = 2intA (1) = 5intA (2) = 9'pokažite broj na poziciji 1Ispravljanje ispisa intA (1)'Ponovno uredite niz kako biste promijenili veličinuReDim intA (3)intA (0) = 6intA (1) = 8'ovaj put pokažite broj na poziciji 1Ispravljanje ispisa intA (1)Kraj podm

Ako pokrenete gornji postupak, vrijednost 5 će se prikazati u neposrednom prozoru, a zatim će se prikazati vrijednost 8 nakon što smo promijenili veličinu polja pomoću ReDim -a i ponovno ga popunili. Međutim, kako nismo popunili IntA (2) i nismo koristili Re-Dim Preserve, vrijednost u toj poziciji u nizu bit će uklonjena, a obje pozicije 3 i 4 u nizu bit će nule.

Korištenje ReDim Preserve

Ako koristimo ReDim Preserve, on će zadržati izvorne vrijednosti sadržane u nizu.

1234567891011121314151617 Pod testDynamicArray ()'deklarirajte nizDim intA () Kao cijeli brojReDim intA (2)'popunite niz brojevimaintA (0) = 2intA (1) = 5intA (2) = 9'pokažite broj na poziciji 2Ispravljanje ispisa intA (2)'ponovi nizReDim intA (3)intA (0) = 6intA (1) = 8'ponovno pokažite broj na položaju 2Ispravljanje ispisa intA (2)Kraj podm

U oba gore prikazana okvira za poruke broj 9 će se pojaviti jer izraz ReDim Preserve zadržava tu vrijednost na tom mjestu.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave