在 VBA 中獲取陣列長度
Glen Alfaro
2023年1月30日
陣列是計算機程式設計中的流行工具,你可以在其中儲存所需的資訊以供以後使用或程式碼執行期間使用。幾乎每一種計算機程式語言,陣列都包含在它們的庫中,因為有時不可避免地需要儲存和檢索資訊。
在 VBA 中,獲取陣列的長度意味著計算陣列中存在的元素的數量。為此,你必須知道索引的最低和最高元素。然後,最高與最低之間的差異將是陣列長度。
此外,你可以使用 COUNTA
工作表函式來獲取相同的資訊。
本教程使用最高/最低索引差異和 COUNTA
工作表函式來獲取 VBA 陣列的長度。
獲取最高和最低索引的差異以獲取 VBA 中的陣列長度
該方法的邏輯是,我們可以通過將最低索引減去最高索引然後加 1 來獲得陣列的長度。我們加 1 是因為需要在陣列長度中包含最低索引。
下面的程式碼塊將演示如何獲取一個固定長度陣列的陣列長度。請注意,僅獲取最高索引來獲取陣列長度並不總是正確的,因為在某些情況下最低索引不等於 0 並且可以從不同的索引開始。
Sub ArrayLengthDemo()
Dim stringArr(5 To 9) As String
stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"
Debug.Print "The array length of stringArr is " UBound(stringArr) - LBound(stringArr) + 1
End Sub
ArrayLengthDemo
輸出:
The array length of stringArr is 5
下面的程式碼塊將演示如何獲取動態陣列的陣列長度。
Sub ArrayLengthDemo()
Dim StringArr As Variant
StringArr = Array("Glen", "Yumi", "Katrina", "Myla", "Jose")
Debug.Print "The array length of StringArr is "; UBound(StringArr) - LBound(StringArr) + 1
End Sub
ArrayLengthDemo
輸出:
The array length of stringArr is 5
將演示在下面的程式碼中實現獲取陣列長度的函式。如果經常需要獲取陣列長度,這將很有幫助。
此外,下面的程式碼具有額外的邏輯來檢測要測量的陣列是否為空。
Public Function GetArrayLength(arr As Variant) As Integer
If IsEmpty(arr) Then
GetArrayLength = 0
Else
GetArrayLength = UBound(arr) - LBound(arr) + 1
End If
End Function
Sub GetArrayLengthDemo1()
Dim stringArr(5 To 9) As String
stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"
Debug.Print "The array length is " & GetArrayLength(stringArr)
End Sub
Sub GetArrayLengthDemo2()
Dim NullArr As Variant
Debug.Print "The array length is " & GetArrayLength(NullArr)
End Sub
GetArrayLengthDemo1
輸出:
The array length is 5
GetArrayLengthDemo2
輸出:
The array length is 0
在 VBA 中使用 COUNTA
工作表函式來獲取陣列長度
陣列是以單維或多維方式構造的元素的集合。你可以使用 COUNTA
工作表函式在一行程式碼中計算這些元素。
下面的程式碼塊演示瞭如何使用 COUNTA
工作表函式獲取陣列長度。
語法:
WorksheetFunction.CountA([ arrayName ])
範圍:
[arrayName] |
要測量的陣列 |
COUNTA
工作表函式僅限於 30 個元素。如果處理大型陣列,建議使用第一種方法。
Sub ArrayLengthDemo()
Dim stringArr(5 To 9) As String
stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"
Debug.Print "The array length of stringArr is " & WorksheetFunction.CountA(stringArr)
End Sub
ArrayLengthDemo
輸出:
The array length of stringArr is 5
Sub ArrayLengthDemo()
Dim StringArr As Variant
StringArr = Array("Glen", "Yumi", "Katrina", "Myla", "Jose")
Debug.Print "The array length of StringArr is " & WorksheetFunction.CountA(stringArr)
End Sub
ArrayLengthDemo
輸出:
The array length of stringArr is 5