在 VBA 中获取数组长度
Glen Alfaro
2023年1月30日
2022年5月18日
数组是计算机编程中的流行工具,你可以在其中保存所需的信息以供以后使用或代码执行期间使用。几乎每一种计算机编程语言,数组都包含在它们的库中,因为有时不可避免地需要保存和检索信息。
在 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