/ / Array dinamico in VBA di Excel

Array dinamico in VBA di Excel

Se la dimensione della matrice aumenta e non si desidera correggere la dimensione dell'array, è possibile utilizzare Parola chiave ReDim. Excel VBA quindi cambia automaticamente la dimensione dell'array.

Aggiungi alcuni numeri alla colonna A.

Array dinamico in VBA di Excel

Inserire un pulsante di comando nel foglio di lavoro e aggiungere le seguenti linee di codice:

1. In primo luogo, dichiariamo la matrice denominata numeri. Dichiara anche due variabili di tipo Integer. Una di queste dimensioni e una di nome i.

Dim numbers() As Integer, size As Integer, i As Integer

Nota: l'array non ha ancora dimensioni. i numeri, le dimensioni e io sono scelti a caso qui, puoi usare qualsiasi nome. Ricorda di fare riferimento a questi nomi nel resto del tuo codice.

2. Successivamente, determiniamo la dimensione della matrice e la memorizziamo nella dimensione variabile. È possibile utilizzare la funzione del foglio di lavoro CountA per questo. Aggiungi la seguente riga di codice:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

3. Ora conosciamo la dimensione della matrice e possiamo ridimensionarla. Aggiungi la seguente riga di codice:

ReDim numbers(size)

4. Successivamente, inizializziamo ciascun elemento dell'array. Usiamo un ciclo.

For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i

5. Visualizziamo l'ultimo elemento dell'array usando un MsgBox.

MsgBox numbers(size)

6. Chiudere il Visual Basic Editor e fare clic sul pulsante di comando sul foglio.

Risultato:

Ultimo elemento della matrice

7. Ora per vedere chiaramente perché questo è chiamato un array dinamico, aggiungi un numero alla colonna A.

Aggiungi numero

8. Fare nuovamente clic sul pulsante di comando.

Risultato della matrice dinamica

Conclusione: Excel VBA ha modificato automaticamente le dimensioni di questo array dinamico.

9. Quando si utilizza la parola chiave ReDim, si cancellano tutti i dati esistenti attualmente memorizzati nell'array. Ad esempio, aggiungi le seguenti linee di codice al codice creato in precedenza:

ReDim numbers(3)
MsgBox numbers(1)

Risultato:

Senza preservare

L'array è vuoto.

10. Quando si desidera conservare i dati nell'array esistente quando si ridimensiona, utilizzare la parola chiave Preserve.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Risultato:

Con Preserve

Leggi anche: