Matrice multidimensionale VBA (array 2D)

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.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave