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.