2015-06-01 15 views
12

Sto cercando di ottenere la lunghezza di un array e continuo a ricevere l'errore "Object Required".Ottieni la lunghezza dell'array?

Sto facendo qualcosa di sbagliato?

Dim columns As Variant 
columns = Array(_ 
"A", "ID", _ 
"D", "Name") 
Debug.Print columns.Length ' Error: Object required 

risposta

32

lunghezza di un array:

UBound(columns)-LBound(columns)+1

UBound da sola non è il metodo migliore per ottenere la lunghezza di ogni schieramento come array in VBA può iniziare a diversi indici ad esempio `Dim arr (da 2 a 10)

UBound restituirà risultati corretti solo se la matrice è basata su 1 (inizia l'indicizzazione a 1 ad es. Dim arr(1 to 10). Restituirà risultati errati in qualsiasi altra circostanza, ad es. Dim arr(10)

Ulteriori informazioni sulla matrice VBAin this VBA Array tutorial.

0

Funzione:

Public Function ArrayLen(arr As Variant) As Integer 
    ArrayLen = UBound(arr) - LBound(arr) + 1 
End Function 

Usage:

Dim arr(1 To 3) As String ' Array starting at 1 instead of 0: nightmare fuel 
Debug.Print ArrayLen(arr) ' Prints 3. Everything's going to be ok. 
Problemi correlati