VBA flerdimensjonal matrise (2D-matriser)

Denne opplæringen vil diskutere 2-d og flerdimensjonale matriser i VBA.

Flerdimensjonal matrise (2D-matriser)

Flerdimensjonale matriser er matriser som inneholder mer enn én dimensjon, vanligvis to eller tre dimensjoner, men matriser kan ha opptil 32 dimensjoner.

Erklær en 2D Array

For å lage en matrise med mer enn én dimensjon, bruk kommaer for å definere hver separate dimensjon:

1 Dim intArr (2,3) som heltall

Befolkning av et 2D -array

Koden nedenfor vil fylle ut et 2D -array, og deretter fylle ut radene og kolonnene i et regneark med verdiene i matrisen.

1234567891011121314151617181920212223242526 Underpopulasjon2D ()'erklærer 2D -matrisenDim intA (2, 3) Som heltall'erklærer variablerDim rw As IntegerDim col As Integer'fyll ut matrisenintA (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'gå gjennom matrisen og fyll ut ExcelFor rw = 0 til 2For kol = 0 til 3Celler (rw + 1, col + 1). Verdi = intA (rw, col)Neste kolNeste rwSlutt Sub

Excel -regnearket ditt bør deretter fylles ut som følger.

Befolkning av en 2D -matrise fra Excel -data

Koden nedenfor vil fylle ut et 2D -array fra et Excel -regneark og deretter fylle ut et annet ark med dataene.

1234567891011121314151617181920212223242526 Underpopulasjon2D ()'Deklarer regnearkeneDim ws_Source som regnearkDim ws_Destination Som regneark'Erklær matrisenDim wsData (10, 2) Som variant'Angi variableneDim rw som heltallDim col As Integer'se kildearketAngi ws_Source = Regneark ("Ark1")'få informasjonen fra kildearket og fyll ut matrisenFor rw = LBound (wsData, 1) Til UBound (wsData, 1)For col = LBound (wsData, 2) Til UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .ValueNeste kolNeste rw'se destasjonsarketAngi ws_Destination = Regneark ("Ark2")'fyll ut destinasjonsarket fra matrisenFor rw = LBound (wsData, 1) Til UBound (wsData, 1)For col = LBound (wsData, 2) Til UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Neste kolNeste rwSlutt Sub

Endre størrelse på ReDim og Re-Dim Preserve

Du kan endre størrelsen på en matrise med ReDim.

1234567891011121314151617 Understørrelse2D ()'erklærer matrisenDim varArray () som variant'erklærer størrelsen på matrisenReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Regnskapsfører"varArray (1, 1) = "Sekretær"varArray (1, 2) = "lege"'redegjør størrelsen på matrisenReDim varArray (0, 1)'befolke matrisenvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Slutt Sub

Når du deklarerer matrisen, mister du alle dataene som tidligere ble holdt i matrisen, med mindre du bruker Erklæring fra ReDim Preserve.

12345678910111213141516 Understørrelse2D ()'erklærer matrisen Dim varArray () som variant'erklærer størrelsen på matrisenReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Regnskapsfører"varArray (1, 1) = "Sekretær"varArray (1, 2) = "lege"'redegjør størrelsen på matrisenReDim Preverve varArray (1, 3)'fyll ut matrisen med flere verdiervarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "rørlegger"Slutt Sub

Du kan bare endre størrelsen på den siste dimensjonen i en matrise hvis du vil beholde de originale dataene i matrisen med Re-Dim Preserve.

Når du klikker på feilsøking, blir feilen uthevet som viser at den første dimensjonen i matrisen ikke er den samme som den første dimensjonen da matrisestørrelsen opprinnelig ble deklarert.

wave wave wave wave wave