在 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