Come ottenere la lunghezza di un array usando vba?
In VBA, ottenere la lunghezza di un array significa contare il numero di elementi presenti in quell’array. Per questo è necessario conoscere l’elemento più basso e l’elemento più alto. Quindi per ottenere questo è possibile utilizzare le funzioni UBOUND e LBOUND che restituiscono rispettivamente il limite superiore e il limite inferiore.
Oltre a questo puoi anche utilizzare COUNTA che è una funzione del foglio di calcolo. E in questo tutorial vedremo entrambi i metodi in modo che tu possa utilizzarne uno qualsiasi secondo la tua comodità.
Passaggi per ottenere la dimensione di un array
Qui abbiamo una tabella che contiene un elenco di mesi e la quantità di vendita per ogni mese.
- Assicurati di avere una tabella dichiarata correttamente con righe e colonne.
- Successivamente, altre due variabili (perché abbiamo un array bidimensionale) per memorizzare i limiti dell’array.
- Quindi è necessario utilizzare una formula in cui è necessario utilizzare la funzione Ubound per ottenere il limite superiore e quindi Lbound per ottenere il limite inferiore dell’array.
- Dato che hai un array bidimensionale, entrambi dovete essere vincolati per le dimensioni e impostare questo valore sulle variabili.
- Alla fine, moltiplica le lunghezze ottenute da Ubound e Lbound come limite superiore e inferiore.
Ecco il codice completo.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2
Nota: ti starai chiedendo se abbiamo un totale di 13 righe nella tabella che ho condiviso con te all’inizio dell’articolo.
Ma abbiamo utilizzato una tabella di 13 righe perché la prima riga era un titolo. E qui abbiamo usato una funzione IF STATEMENT e ISEMPTY per verificare se l’array dichiarato non contiene alcun elemento.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."
Utilizzo di COUNTA per ottenere la lunghezza dell’array
Come sai, un array è un insieme di elementi strutturati in modo unidimensionale o multidimensionale ed è possibile utilizzare la funzione COUNTA ( funzione del foglio di calcolo ) per contare questi elementi in una volta sola.
Nel codice seguente hai utilizzato lo stesso array dichiarato in precedenza e quindi hai utilizzato una variabile per memorizzare il numero di elementi restituiti dalla funzione.
E come puoi vedere, il risultato restituito è 24, che è il numero totale di elementi che abbiamo nell’array.
Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount
C’è una cosa di cui devi occuparti, questo metodo non sarà l’ideale da utilizzare in ogni situazione, quindi è sempre bene utilizzare il metodo di cui abbiamo discusso in precedenza.
Puoi anche scrivere codice per verificare prima se l’array dichiarato non è vuoto.
Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."