VBA multidimensionale array (2D-arrays)

In deze zelfstudie worden 2-d en multidimensionale arrays in VBA besproken.

Multidimensionale array (2D-arrays)

Multidimensionale arrays zijn arrays die meer dan één dimensie bevatten, meestal twee of drie dimensies, maar arrays kunnen maximaal 32 dimensies hebben.

Een 2D-array declareren

Als u een array met meer dan één dimensie wilt maken, gebruikt u komma's om elke afzonderlijke dimensie te definiëren:

1 Dim intArr(2,3) als geheel getal

Een 2D-array vullen

De onderstaande code vult een 2D-array en vult vervolgens de rijen en kolommen van een werkblad met de waarden in de array.

1234567891011121314151617181920212223242526 Subpopuleren2D()'declareer de 2D-array'Dim intA(2, 3) als geheel getal'variabelen declareren'Dim rw als geheel getalDim col als geheel getal'vul de array'intA(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 door de array en vul Excel in'Voor rw = 0 tot 2Voor col = 0 tot 3Cellen (rw + 1, col + 1). Waarde = intA (rw, col)volgende kleurVolgende rwEinde sub

Uw Excel-spreadsheet moet dan als volgt worden ingevuld.

Een 2D-array vullen vanuit Excel-gegevens

De onderstaande code vult een 2D-array uit een Excel-werkblad en vult vervolgens een ander blad met de gegevens.

1234567891011121314151617181920212223242526 Subpopuleren2D()'Declareer de werkbladen'Dim ws_Bron als werkbladDim ws_Destination als werkblad'Declareer de array'Dim wsData(10, 2) Als variant'Declareer de variabelen'Dim rw als geheel getalDim col als geheel getal'verwijs naar het bronblad'Stel ws_Source = Werkbladen ("Blad1") in'haal de informatie uit het bronblad en vul de array'Voor rw = LBound(wsData, 1) Naar UBound(wsData, 1)Voor col = LBound(wsData, 2) Naar UBound(wsData, 2)wsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).Waardevolgende kleurVolgende rw'raadpleeg het bestemmingsblad'Stel ws_Destination = Werkbladen ("Blad2") in' vul het bestemmingsblad uit de array inVoor rw = LBound(wsData, 1) Naar UBound(wsData, 1)Voor col = LBound(wsData, 2) Naar UBound(wsData, 2)ws_Destination.Range("A1").Offset(rw,col).Waarde = wsData(rw,col)volgende kleurVolgende rwEinde sub

Formaat wijzigen met ReDim en Re-Dim Preserve

U kunt de grootte van een array wijzigen met ReDim.

1234567891011121314151617 Subgrootte wijzigen2D()'declareer de array'Dim varArray() als variant'declareer de grootte van de array'ReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Accountant"varArray(1, 1) = "Secretaris"varArray(1, 2) = "Dokter"'de grootte van de array opnieuw declareren'ReDim varArray(0, 1)'vul de array opnieuw in'varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"Einde sub

Wanneer u de array opnieuw declareert, verliest u alle gegevens die eerder in de array waren opgeslagen, tenzij u de . gebruikt ReDim Preserve-verklaring.

12345678910111213141516 Subgrootte wijzigen2D()'declareer de array Dim varArray() als Variant'declareer de grootte van de array'ReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred Buckle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Accountant"varArray(1, 1) = "Secretaris"varArray(1, 2) = "Dokter"'de grootte van de array opnieuw declareren'ReDim Preverve varArray(1, 3)'vul de array met extra waarden'varArray(0, 3) = "Rob Barnes"varArray(1, 3) = "Loodgieter"Einde sub

U kunt de grootte van de laatste dimensie van een array alleen wijzigen als u de originele gegevens in de array wilt behouden met Behoud opnieuw dimmen.

Wanneer u op foutopsporing klikt, wordt de fout gemarkeerd, wat aangeeft dat de eerste dimensie in de array niet hetzelfde is als de eerste dimensie toen de arraygrootte oorspronkelijk werd gedeclareerd.

wave wave wave wave wave