Array dinamico in Excel VBA
Se la dimensione dei aumenta matrice e non si vuole fissare la dimensione della matrice, è possibile utilizzare la parola chiave ReDim. Excel VBA poi cambia automaticamente le dimensioni della matrice.
Aggiungete un po ‘i numeri per colonna A.
Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:
-
In primo luogo, si dichiara il numero di array di nome. dichiarare anche due variabili di tipo Integer. Un nome formato e uno chiamato i.
Dim numbers() As Integer, size As Integer, i As Integer
Nota: la matrice non ha ancora formato. i numeri, le dimensioni e io sono scelti a caso qui, è possibile utilizzare qualsiasi nome. Ricordarsi di fare riferimento a questi nomi nel resto del codice.
-
Successivamente, si determina la dimensione della matrice e memorizzarlo nella dimensione variabile. È possibile utilizzare la funzione del foglio di lavoro CONTA.VALORI per questo. Aggiungere la seguente riga di codice:
size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
-
Ora sappiamo la dimensione della matrice e possiamo ridimensionare esso. Aggiungere la seguente riga di codice:
ReDim numbers(size)
-
Successivamente, inizializzare ogni elemento dell’array. Usiamo un ciclo.
For i = 1 To size numbers(i) = Cells(i, 1).Value Next i
-
visualizzare l’ultimo elemento dell’array utilizzando un MsgBox.
MsgBox numbers(size)
-
Uscire l’editor di Visual Basic e fare clic sul pulsante di comando sul foglio.
Risultato:
-
Ora di vedere chiaramente il motivo per cui questo è chiamato un array dinamico, aggiungere un numero di colonna A.
-
Fare nuovamente clic sul pulsante di comando.
Conclusione: Excel VBA è cambiato automaticamente la dimensione di questo array dinamico.
-
Quando si utilizza la parola chiave ReDim, si cancellano tutti i dati esistenti attualmente memorizzati nella matrice. Ad esempio, aggiungere le seguenti righe di codice per il codice creato in precedenza:
ReDim numbers(3) MsgBox numbers(1)
Risultato:
La matrice è vuoto.
-
Quando si desidera conservare i dati nella matrice esistente quando si ridimensionare, utilizzare la parola chiave Preserve.
ReDim Preserve numbers(3) MsgBox numbers(1)
Risultato: