VBA dinamiskā masīvs (Redim & Redim Preserve)

Šī 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.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave