VBA flerdimensionel matrix (2D-arrays)

Denne vejledning vil diskutere 2-d og multi-dimensionelle arrays i VBA.

Flerdimensionel matrix (2D-arrays)

Multidimensionale arrays er arrays, der indeholder mere end en dimension, normalt to eller tre dimensioner, men arrays kan have op til 32 dimensioner.

Angiv et 2D -array

Hvis du vil oprette en matrix med mere end én dimension, skal du bruge kommaer til at definere hver separat dimension:

1 Dim intArr (2,3) som heltal

Befolkning af et 2D -array

Koden herunder vil udfylde et 2D -array og derefter udfylde rækker og kolonner i et regneark med værdierne i arrayet.

1234567891011121314151617181920212223242526 Underbefolkning2D ()'erklærer 2D -arrayetDim intA (2, 3) Som heltal'erklærer variablerDim rw Som heltalDim col As Integer'udfyld matrixenintA (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'loop gennem arrayet og udfyld ExcelFor rw = 0 til 2For col = 0 til 3Celler (rw + 1, col + 1). Værdi = intA (rw, col)Næste kolNæste rwAfslut Sub

Dit Excel -regneark skal derefter udfyldes som følger.

Befolkning af et 2D -array fra Excel -data

Koden herunder vil udfylde et 2D -array fra et Excel -regneark og derefter udfylde et andet ark med dataene.

1234567891011121314151617181920212223242526 Underbefolkning2D ()'Deklarér regnearkeneDim ws_Source som regnearkDim ws_Destination som regneark'Deklarere arrayetDim wsData (10, 2) Som variant'Angiv variablerneDim rw som heltalDim col As Integer'se kildearketAngiv ws_Source = regneark ("Ark1")'få oplysningerne fra kildearket og udfyld matrixenFor 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) .VærdiNæste kolNæste rw'se destationsarketAngiv ws_Destination = regneark ("Sheet2")'udfyld destinationsarket fra arrayetFor rw = LBound (wsData, 1) Til UBound (wsData, 1)For col = LBound (wsData, 2) Til UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Værdi = wsData (rw, col)Næste kolNæste rwAfslut Sub

Ændring af størrelse ved hjælp af ReDim og Re-Dim Preserve

Du kan ændre størrelsen på en matrix ved hjælp af ReDim.

1234567891011121314151617 Understørrelse2D ()'erklærer arrayetDim varArray () som variant'angive størrelsen på arrayetReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Bogholder"varArray (1, 1) = "Sekretær"varArray (1, 2) = "Læge"'redegør for størrelsen på arrayetReDim varArray (0, 1)'genopbygge arrayetvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Afslut Sub

Når du gendeklarerer matrixen, mister du alle data, der tidligere blev holdt i arrayet, medmindre du bruger Erklæring fra ReDim Preserve.

12345678910111213141516 Understørrelse2D ()'erklærer matrixen Dim varArray () som variant'angive størrelsen på arrayetReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Bogholder"varArray (1, 1) = "Sekretær"varArray (1, 2) = "Læge"'redegør for matrixens størrelseReDim Preverve varArray (1, 3)'udfyld matrixen med yderligere værdiervarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "VVS -installatør"Afslut Sub

Du kan kun ændre størrelsen på den sidste dimension af et array, hvis du vil beholde de originale data i arrayet med Bevar igen.

Når du klikker på fejlfinding, fremhæves fejlen, der viser, at den første dimension i matrixen ikke er den samme som den første dimension, da matrixstørrelsen oprindeligt blev erklæret.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave