Come creare una tabella dinamica in vba?
Un array dinamico è qualcosa in cui puoi ridimensionare l’array e aggiungervi più valore durante l’esecuzione del codice. In questo tutorial esploreremo i modi per scrivere codice in cui puoi ridimensionare e aggiungere più elementi.
Crea una tabella dinamica in VBA
- Innanzitutto, dichiara un array con il suo nome.
- Successivamente, il numero di elementi ha lasciato le parentesi vuote.
- Ora usa l’istruzione ReDim.
- Alla fine, specifica il numero di elementi che desideri aggiungere all’array.
Dim myArray() As String ReDim myArray(5)
Non dimenticare di leggere questo articolo di Joshua sulle prestazioni degli array fissi e dinamici.
Array multidimensionale dinamico
L’esempio che abbiamo utilizzato era un array unidimensionale e allo stesso modo puoi utilizzare anche l’istruzione ReDim per creare array multidimensionali dinamici.
Dim myArray() As String ReDim myArray(5, 8)
Aggiungi un nuovo elemento a un array dinamico in VBA
Un array dinamico non avrà senso se non puoi aggiungervi un nuovo elemento. Nel prossimo esempio vedremo come aggiungere nuovi elementi una volta ridefinito il numero di elementi in un array.
'declaring array with no element. '--------------------- Dim iNames() As String '--------------------- 'declaring variables to store counter _ 'and elements from the range. '---------------------- Dim iCount As Integer Dim iElement As Integer '---------------------- 'get the last row number to decide the _ 'number of elements for the array. '------------------------------------ iCount = Range("A1").End(xlDown).Row '------------------------------------ 're-defining the elements for the array. '------------------- ReDim iNames(iCount) '------------------- 'using a for loop to add elements in the array 'from the range starting from cell A1 '-------------------------------------------------- For iElement = 1 To iCount iNames(iElement - 1) = Cells(iElement, 1).Value Next iElement '-------------------------------------------------- 'print all the elements from the 'to the immediate window '-------------------- Debug.Print iNames(0) Debug.Print iNames(1) Debug.Print iNames(2) '--------------------
Comprendiamo questo codice passo dopo passo.
- Nel primo passaggio hai dichiarato un array con il nome “myArray”.
- Dopodiché hai due variabili per salvare i valori del contatore per il ciclo che dovrai utilizzare più avanti nel codice per ottenere valori dall’intervallo e aggiungere tali valori come elementi all’array.
- Quindi hai una riga di codice per ottenere l’ultima riga dell’intervallo che ti aiuta a sapere quali elementi devi aggiungere all’array.
- Nel quarto passaggio è stata utilizzata l’istruzione ReDim per ridefinire gli elementi dell’array utilizzando l’ultimo numero di riga ottenuto nel passaggio precedente.
- Poi hai FOR LOOP (For Next) che scorre l’intervallo partendo dalla cella A1, prende i valori da lì e li aggiunge come elementi all’array uno per uno.
- Alla fine, hai l’istruzione Debug.Print per stampare tutti gli elementi nella finestra immediata .
E quando aggiungo un nuovo valore all’intervallo ed eseguo nuovamente il codice, aggiunge automaticamente quell’elemento all’array e lo stampa nella finestra immediata .