Večrazsežni niz VBA (2D nizi)

Ta vadnica bo obravnavala 2-d in večdimenzionalne matrike v VBA.

Večdimenzionalni niz (2D nizi)

Večdimenzionalni nizi so matrike, ki vsebujejo več kot eno dimenzijo, običajno dve ali tri dimenzije, lahko pa imajo do 32 dimenzij.

Razglasite 2D matriko

Če želite ustvariti matriko z več kot eno razsežnostjo, z vejicami določite vsako ločeno dimenzijo:

1 Zatemni intArr (2,3) kot celo število

Napolnite 2D matriko

Spodnja koda bo zapolnila 2D matriko, nato pa vrstice in stolpce delovnega lista napolnila z vrednostmi v matriki.

1234567891011121314151617181920212223242526 Podpopulacija2D ()'razglasite 2D matrikoZatemni intA (2, 3) kot celo število'razglasi spremenljivkeZatemni rw kot celo številoDim col kot celo število'napolni matrikointA (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'preletite skozi matriko in zapolnite ExcelZa rw = 0 do 2Za col = 0 do 3Celice (rw + 1, col + 1). Vrednost = intA (rw, col)Naslednji stolpecNaslednji rwEnd Sub

Nato morate svojo Excelovo preglednico izpolniti na naslednji način.

Napolnite 2D matriko iz Excelovih podatkov

Spodnja koda bo zapolnila 2D matriko iz Excelovega delovnega lista in nato napolnila drug list s podatki.

1234567891011121314151617181920212223242526 Podpopulacija2D ()„Razglasite delovne listeZatemni ws_Source kot delovni listZatemni ws_Destination kot delovni list'Razglasite matrikoZatemni wsData (10, 2) kot varianto'Razglasite spremenljivkeZatemni rw kot celo številoDim col kot celo število'glej izvorni listSet ws_Source = Delovni listi ("List1")'dobite informacije iz izvornega lista in napolnite matrikoZa rw = LBound (wsData, 1) Za UBound (wsData, 1)Za col = LBound (wsData, 2) Za UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Odmik (rw, col) .VrednostNaslednji stolpecNaslednji rw'glej destalni listSet ws_Destination = Delovni listi ("List2")'izpolnite ciljni list iz matrikeZa rw = LBound (wsData, 1) Za UBound (wsData, 1)Za col = LBound (wsData, 2) Za UBound (wsData, 2)ws_Destination.Range ("A1"). Odmik (rw, col) .Vrednost = wsData (rw, col)Naslednji stolpecNaslednji rwEnd Sub

Spreminjanje velikosti z uporabo ReDim in Re-Dim Preserve

Velikost matrike lahko spremenite s pomočjo ReDim.

1234567891011121314151617 Sub Resize2D ()'razglasi matrikoZatemni varArray () kot varianto'navedite velikost matrikeReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred zaponka"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Računovodja"varArray (1, 1) = "Tajnik"varArray (1, 2) = "Zdravnik"'ponovno razglasi velikost matrikeReDim varArray (0, 1)'ponovno napolni matrikovarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred zaponka"End Sub

Ko znova deklarirate matriko, boste izgubili vse podatke, ki so bili prej shranjeni v matriki, razen če uporabite Izjava o ohranjanju ReDim.

12345678910111213141516 Sub Resize2D ()'razglasite matriko Dim varArray () kot varianto'navedite velikost matrikeReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred zaponka"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Računovodja"varArray (1, 1) = "Tajnik"varArray (1, 2) = "Zdravnik"'ponovno razglasi velikost matrikeReDim Preverve varArray (1, 3)'napolni polje z dodatnimi vrednostmivarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Vodovodar"End Sub

Zadnjo dimenzijo matrike lahko spremenite le, če želite ohraniti izvirne podatke v matriki z Ponovno zatemni rezervat.

Ko kliknete odpravljanje napak, bo napaka označena, kar kaže, da prva dimenzija v matriki ni enaka prvi dimenziji, ko je bila velikost matrike prvotno deklarirana.

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

wave wave wave wave wave