VBA daugiamatis masyvas (2D masyvai)

Šioje pamokoje bus aptariami 2-d ir daugialypiai masyvai VBA.

Kelių matmenų masyvas (2D masyvai)

Kelių matmenų masyvai yra masyvai, kuriuose yra daugiau nei vienas matmuo, paprastai du ar trys matmenys, tačiau masyvai gali turėti iki 32 matmenų.

Paskelbkite 2D masyvą

Norėdami sukurti masyvą, turintį daugiau nei vieną aspektą, kableliais apibrėžkite kiekvieną atskirą aspektą:

1 Dim intArr (2,3) kaip sveikasis skaičius

2D masyvo užpildymas

Žemiau pateiktas kodas užpildys 2D masyvą, o tada užpildys darbalapio eilutes ir stulpelius su masyvo reikšmėmis.

1234567891011121314151617181920212223242526 Antrasis užpildymas2D ()“paskelbti 2D masyvąDim intA (2, 3) kaip sveikasis skaičius“skelbti kintamuosiusDim rw Kaip sveikasis skaičiusDim col As As Integer'užpildyti masyvąintA (0, 0) = 45intA (0, 1) = 50intA (0, 2) = 55intA (0, 3) = 60intA (1, 0) = 65intA (1, 1) = 70intA (1, 2) = 75intA (1, 3) = 80intA (2, 0) = 85intA (2, 1) = 90intA (2, 2) = 95intA (2, 3) = 100“peržiūrėkite masyvą ir užpildykite„ Excel “Jei rw = nuo 0 iki 2Spalva = nuo 0 iki 3Ląstelės (rw + 1, col + 1). Vertė = intA (rw, col)Kitas stulpelisKitas rwPabaiga Sub

Tada jūsų „Excel“ skaičiuoklė turėtų būti užpildyta taip.

2D masyvo užpildymas iš „Excel“ duomenų

Žemiau pateiktas kodas užpildys 2D masyvą iš „Excel“ darbalapio ir tada užpildys kitą lapą su duomenimis.

1234567891011121314151617181920212223242526 Antrasis užpildymas2D ()„Paskelbkite darbalapiusDim ws_Source As WorkheetDim ws_Destination As Workheet'Paskelbkite masyvąDim wsData (10, 2) Kaip variantas'Paskelbkite kintamuosiusDim rw kaip sveikasis skaičiusDim col As As Integer“žr. šaltinio lapąNustatyti ws_Source = darbalapius („Sheet1“)“Gaukite informaciją iš šaltinio lapo ir užpildykite masyvąJei rw = LBound (wsData, 1) iki UBound (wsData, 1)Col = LBound (wsData, 2) iki UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Poslinkis (rw, col).Kitas stulpelisKitas rw“nurodykite paskirties lapąNustatykite ws_Destination = darbalapius („Sheet2“)“užpildykite paskirties lapą iš masyvoJei rw = LBound (wsData, 1) iki UBound (wsData, 1)Col = LBound (wsData, 2) iki UBound (wsData, 2)ws_Destination.Range ("A1"). Poslinkis (rw, col) .Value = wsData (rw, col)Kitas stulpelisKitas rwPabaiga Sub

Keisti dydį naudojant „ReDim“ ir „Re-Dim Preserve“

Masyvo dydį galite pakeisti naudodami ReDim.

1234567891011121314151617 2 dydžio keitimas ()“paskelbti masyvąDim varArray () kaip Variant“paskelbti masyvo dydį„ReDim varArray“ (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Buhalteris"varArray (1, 1) = "Sekretorius"varArray (1, 2) = "Gydytojas"iš naujo paskelbti masyvo dydį„ReDim varArray“ (0, 1)“iš naujo užpildyti masyvąvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Pabaiga Sub

Kai iš naujo deklaruojate masyvą, prarasite visus anksčiau masyve buvusius duomenis, nebent naudosite „ReDim Preserve“ pareiškimas.

12345678910111213141516 2 dydžio keitimas ()'paskelbti masyvą Dim varArray () kaip variantą“paskelbti masyvo dydį„ReDim varArray“ (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Buhalteris"varArray (1, 1) = "Sekretorius"varArray (1, 2) = "Gydytojas"iš naujo paskelbti masyvo dydį„ReDim Preverve varArray“ (1, 3)“užpildykite masyvą papildomomis vertėmisvarArray (0, 3) = "Robas Barnesas"varArray (1, 3) = "Santechnikas"Pabaiga Sub

Paskutinio masyvo matmens dydį galite pakeisti tik tuo atveju, jei norite išsaugoti masyvo pradinius duomenis su Iš naujo pritemdyti išsaugojimą.

Spustelėjus derinimą, bus paryškinta klaida, rodanti, kad pirmasis masyvo aspektas nėra tas pats kaip pirmasis matmuo, kai masyvo dydis buvo iš pradžių deklaruotas.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave