在 VBA 中獲取陣列長度

Glen Alfaro 2023年1月30日 2022年5月18日
  1. 獲取最高和最低索引的差異以獲取 VBA 中的陣列長度
  2. 在 VBA 中使用 COUNTA 工作表函式來獲取陣列長度
在 VBA 中獲取陣列長度

陣列是計算機程式設計中的流行工具,你可以在其中儲存所需的資訊以供以後使用或程式碼執行期間使用。幾乎每一種計算機程式語言,陣列都包含在它們的庫中,因為有時不可避免地需要儲存和檢索資訊。

在 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 

相關文章 - VBA Array