Dinamični niz VBA (Redim & Redim Preserve)

Ta vadnica bo pokazala, kako uporabljati dinamične matrike (redim and redim save) v VBA.

Dinamični niz

Dinamični nizi so matrike, ki lahko spreminjajo velikosti (v nasprotju z statične matrike, ki so statični).

Če želite razglasiti dinamično polje, ga deklarirate, velikost polja pa izpustite:

1 Dim strNames () Kot niz

Preden lahko matriki dodelite vrednosti, morate z izjavo ReDim nastaviti matriko na želeno velikost:

1 ReDim strNames (1 do 3)

Kadar koli želite spremeniti velikost matrike, preprosto uporabite ReDim (ali ReDim Preserve, o čemer bomo izvedeli spodaj).

Dinamični variacijski nizi

Opomba: Različice nizov so nekoliko drugačne. Z različnimi matrikami vam ni treba nastaviti velikosti matrike z ReDimom pred dodelitvijo vrednosti.

12345678 Sub TestArray ()'razglasi spremenljivkoDim varNames () Kot varianta'napolni matrikovarNames () = Array ("Fred", "Wilma", "Barney", "Betty")'vrnite vrednostiPridruži se MsgBox (varNames, ",")End Sub

Redim vs Redim Preserve

The ReDim stavek spremeni velikost matrike, čiščenje vse obstoječe vrednote.

The ReDim Preserve stavek spremeni velikost matrike, vodenje (»Ohranjanje«) vseh obstoječih vrednot.

Uporaba programa ReDim

V praksi je spreminjanje velikosti matrike z ReDim videti tako:

123456789101112 Sub TestReDim ()'razglasite niz nizovDim strNames () Kot niz'spremenite velikost nizov nizov, da bodo lahko vsebovale 3 vrednostiReDim strNames (1 do 3)'napolnite polje s 3 imenistrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'prikaže rezultat v neposrednem oknuDebug.Print Join (strNames, vbCrLf)End Sub

Uporaba ReDim Preserve

V tem primeru bomo uporabili ReDim za nastavitev začetnega dinamičnega niza in nato ReDim Preserve za spreminjanje velikosti matrike, vodenje prvotne vrednosti:

1234567891011121314151617 Sub TestReDim ()'razglasite niz nizovDim strNames () Kot niz'spremenite velikost nizov nizov, da bodo lahko vsebovale 3 vrednostiReDim strNames (1 do 3)'napolni matrikostrNames (1) = "Mel"strNames (2) = "Steve"strNames (3) = "Bob"'prikaže rezultat v neposrednem oknuDebug.Print Join (strNames, vbCrLf)"Redim, vendar shranite podatkeReDim Preserve strNames (1 do 4)strNames (4) = "Fred"'prikaže rezultat v neposrednem oknuDebug.Print Join (strNames, vbCrLf)End Sub

Če ne uporabljate REZERVIRAJTE izjavo, bi izgubili podatke, ki so bili prej v matriki.

V neposrednem oknu zgoraj je matrika naselila Mel, Stevea in Boba. Ko je bil ponovno razglašen, je te vrednosti odstranil in namesto tega vrnil 3 prazne vrednosti in nato vrednost 'Fred'. To je posledica REZERVIRAJTE izjava izpuščena.

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave