Šī apmācība parādīs, kā VBA izmantot dinamiskos masīvus (redim un redim saglabāt).
Dinamiskais masīvs
Dinamiskie masīvi ir masīvi, kas var mainīt izmērus (atšķirībā no statiskie masīvi, kas ir statiski).
Lai deklarētu dinamisku masīvu, jūs deklarējat masīvu, bet izlaižat masīva lielumu:
1 | Dim strNames () kā virkne |
Pēc tam, pirms varat piešķirt masīvam vērtības, jums jāizmanto ReDim Statement, lai masīvu iestatītu vēlamajā izmērā:
1 | ReDim strNames (no 1 līdz 3) |
Tagad, kad vēlaties mainīt masīva lielumu, vienkārši izmantojiet ReDim (vai ReDim Preserve, kā mēs uzzināsim tālāk).
Dinamiskie variantu masīvi
Piezīme. Variantu masīvi ir nedaudz atšķirīgi. Izmantojot masīvu variantus, pirms vērtību piešķiršanas jums nav jāiestata masīva lielums ar ReDim.
12345678 | Sub TestArray ()'deklarēt mainīgoDim varNames () Kā variants'aizpildīt masīvuvarNames () = masīvs ("Fred", "Wilma", "Barney", "Betty")'atdod vērtībasMsgBox Join (varNames, ",")Beigu apakš |
Redim pret Redim Preserve
The ReDim paziņojums maina masīva izmērus, klīrings visas esošās vērtības.
The ReDim Preserve paziņojums maina masīva izmērus, turēšana (“Saglabājot”) visas esošās vērtības.
Izmantojot ReDim
Praksē masīva izmēru maiņa ar ReDim izskatās šādi:
123456789101112 | ApakštestsReDim ()'deklarēt virkņu masīvuDim strNames () kā virkne'mainiet virkņu masīva izmērus, lai varētu turēt 3 vērtībasReDim strNames (no 1 līdz 3)'aizpildiet masīvu ar 3 nosaukumiemstrNames (1) = "Mel"strNames (2) = "Stīvs"strNames (3) = "Bobs""parādiet rezultātu tūlītējā logāAtkļūdot. Drukāt pievienošanos (strNames, vbCrLf)Beigu apakš |
Izmantojot ReDim Preserve
Šajā piemērā mēs izmantosim ReDim, lai iestatītu sākotnējo dinamisko masīvu, un pēc tam ReDim Preserve, lai mainītu masīva izmērus, turēšana sākotnējās vērtības:
1234567891011121314151617 | ApakštestsReDim ()'deklarēt virkņu masīvuDim strNames () kā virkne'mainiet virkņu masīva izmērus, lai varētu turēt 3 vērtībasReDim strNames (no 1 līdz 3)'aizpildīt masīvustrNames (1) = "Mel"strNames (2) = "Stīvs"strNames (3) = "Bobs""parādiet rezultātu tūlītējā logāAtkļūdot. Drukāt pievienošanos (strNames, vbCrLf)redim, bet saglabājiet datusReDim Saglabāt strNames (no 1 līdz 4)strNames (4) = "Freds""parādiet rezultātu tūlītējā logāAtkļūdot. Drukāt pievienošanos (strNames, vbCrLf)Beigu apakš |
Ja neizmantojat SAGLABĀT paziņojumu, jūs zaudēsit datus, kas iepriekš bija masīvā.
Tūlītējā logā iepriekš masīvs apdzīvoja Melu, Stīvu un Bobu. Kad tas tika atkārtoti deklarēts, tas noņem šīs vērtības un tā vietā atgriež 3 tukšas vērtības un pēc tam vērtību “Fred”. Tas ir saistīts ar SAGLABĀT paziņojums tiek izlaists.