Questo tutorial discuterà di array bidimensionali e multidimensionali in VBA.
Matrice multidimensionale (array 2D)
Gli array multidimensionali sono array che contengono più di una dimensione, in genere due o tre dimensioni, ma gli array possono avere fino a 32 dimensioni.
Dichiarare un array 2D
Per creare un array con più di una dimensione, usa le virgole per definire ogni dimensione separata:
1 | Dim intArr(2,3) come intero |
Popolamento di un array 2D
Il codice seguente popolerà un array 2D, quindi popolerà le righe e le colonne di un foglio di lavoro con i valori nell'array.
1234567891011121314151617181920212223242526 | Sottopopola2D()'dichiarare l'array 2D'Dim intA(2, 3) As Integer'dichiarare variabiliDim rw As IntegerDim col As Integer'popola l'arrayintA(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'passa attraverso l'array e popola ExcelPer rw = da 0 a 2Per col = da 0 a 3Cells(rw + 1, col + 1).Value = intA(rw, col)Colpo successivorw successivoFine sottotitolo |
Il tuo foglio di calcolo Excel dovrebbe quindi essere compilato come segue.
Popolamento di un array 2D da dati Excel
Il codice seguente popolerà un array 2D da un foglio di lavoro Excel e quindi popolerà un foglio diverso con i dati.
1234567891011121314151617181920212223242526 | Sottopopola2D()'Dichiarare i fogli di lavoroDim ws_Source As WorksheetDim ws_Destination As Worksheet'Dichiara l'arrayDim wsData(10, 2) come variante'Dichiarare le variabiliDim rw come interoDim col As Integer'fare riferimento al foglio sorgenteImposta ws_Source = Fogli di lavoro ("Foglio1")'ottieni le informazioni dal foglio sorgente e popola l'arrayPer rw = LBound(wsData, 1) A UBound(wsData, 1)Per col = LBound(wsData, 2) To UBound(wsData, 2)wsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).ValueColpo successivorw successivo'fare riferimento al foglio di destinazioneImposta ws_Destination = Fogli di lavoro ("Foglio2")'popola il foglio di destinazione dall'arrayPer rw = LBound(wsData, 1) A UBound(wsData, 1)Per col = LBound(wsData, 2) To UBound(wsData, 2)ws_Destination.Range("A1").Offset(rw,col).Value = wsData(rw, col)Colpo successivorw successivoFine sottotitolo |
Ridimensionamento utilizzando ReDim e Re-Dim Preserve
Puoi ridimensionare un array usando ReDim.
1234567891011121314151617 | Sotto Ridimensiona2D()'dichiarare l'arrayDim varArray() come Variante'dichiarare la dimensione dell'arrayReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fibbia Fred"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Contabile"varArray(1, 1) = "Segretaria"varArray(1, 2) = "Dottore"'ridichiarare la dimensione dell'arrayReDim varArray(0, 1)'ripopola l'arrayvarArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fibbia Fred"Fine sottotitolo |
Quando ridichiari l'array, perderai tutti i dati precedentemente contenuti nell'array a meno che non usi il Dichiarazione ReDim Preserve.
12345678910111213141516 | Sub Ridimensiona2D()'dichiarare l'array Dim varArray() come Variant'dichiarare la dimensione dell'arrayReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fibbia Fred"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Contabile"varArray(1, 1) = "Segretaria"varArray(1, 2) = "Dottore"'ridichiarare la dimensione dell'arrayReDim Preverve varArray(1, 3)'popola l'array con valori aggiuntivivarArray(0, 3) = "Rob Barnes"varArray(1, 3) = "Idraulico"Fine sottotitolo |
Puoi ridimensionare l'ultima dimensione di un array solo se vuoi mantenere i dati originali nell'array con Re-Dim Preserva.
Quando si fa clic su debug, l'errore verrà evidenziato mostrando che la prima dimensione nell'array non è la stessa della prima dimensione quando la dimensione dell'array è stata dichiarata originariamente.