VBA flerdimensionell matris (2D-matriser)

Denna handledning kommer att diskutera 2-d och flerdimensionella matriser i VBA.

Flerdimensionell matris (2D-matriser)

Flerdimensionella matriser är matriser som innehåller mer än en dimension, vanligtvis två eller tre dimensioner, men matriser kan ha upp till 32 dimensioner.

Deklarera en 2D -matris

För att skapa en matris med mer än en dimension, använd kommatecken för att definiera varje separat dimension:

1 Dim intArr (2,3) som heltal

Befolkning av en 2D -matris

Koden nedan fyller i en 2D -matris och fyller sedan i raderna och kolumnerna i ett kalkylblad med värdena i matrisen.

1234567891011121314151617181920212223242526 Underpopulation2D ()'deklarera 2D -matrisenDim intA (2, 3) Som heltal'deklarera variablerDim rw Som heltalDim col As Integer'fyll i 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å igenom matrisen och fyll i ExcelFör rw = 0 till 2För kol = 0 till 3Celler (rw + 1, col + 1). Värde = intA (rw, kol)Nästa kolNästa rwAvsluta Sub

Ditt Excel -kalkylblad ska sedan fyllas i enligt följande.

Befolkning av en 2D -matris från Excel -data

Koden nedan fyller i en 2D -matris från ett Excel -kalkylblad och fyller sedan i ett annat ark med data.

1234567891011121314151617181920212223242526 Delpopulation2D ()'Deklarera kalkylbladDim ws_Source som kalkylbladDim ws_Destination som arbetsblad'Deklarera matrisenDim wsData (10, 2) som variant'Deklarera variablernaDim rw som heltalDim col As Integer'se källbladetStäll in ws_Source = Worksheets ("Sheet1")'hämta informationen från källbladet och fyll i matrisenFör rw = LBound (wsData, 1) Till UBound (wsData, 1)För col = LBound (wsData, 2) Till UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Offset (rw, col) .VärdeNästa kolNästa rw'se destationsbladetAnge ws_Destination = Arbetsblad ("Sheet2")'fyll i målarket från matrisenFör rw = LBound (wsData, 1) Till UBound (wsData, 1)För col = LBound (wsData, 2) Till UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Nästa kolNästa rwAvsluta Sub

Ändra storlek med ReDim och Re-Dim Preserve

Du kan ändra storlek på en array med ReDim.

1234567891011121314151617 Sub Resize2D ()'deklarera matrisenDim varArray () som variant'deklarera storleken på matrisenReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Bokförare"varArray (1, 1) = "Sekreterare"varArray (1, 2) = "Doktor"'deklarera storleken på matrisenReDim varArray (0, 1)'återbefolka matrisenvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Avsluta Sub

När du deklarerar matrisen förlorar du all data som tidigare fanns i matrisen om du inte använder ReDim Preserve -uttalande.

12345678910111213141516 Sub Resize2D ()'deklarera matrisen Dim varArray () som variant'deklarera storleken på matrisenReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Bokförare"varArray (1, 1) = "Sekreterare"varArray (1, 2) = "Doktor"'deklarera storleken på matrisenReDim Preverve varArray (1, 3)'fyll i matrisen med ytterligare värdenvarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "rörmokare"Avsluta Sub

Du kan bara ändra storlek på den sista dimensionen i en matris om du vill behålla originaldata i matrisen med Re-Dim Preserve.

När du klickar på felsökning markeras felet som visar att den första dimensionen i matrisen inte är densamma som den första dimensionen när matrisstorleken ursprungligen deklarerades.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave