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.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave