如何使用vba获取数组的长度?

在 VBA 中,获取数组的长度意味着计算该数组中元素的数量。为此,您需要知道最低元素和最高元素。因此,要获得此值,您可以使用UBOUNDLBOUND函数,它们分别返回上限和下限。

除此之外,您还可以使用电子表格函数 COUNTA。在本教程中,我们将看到这两种方法,以便您可以根据自己的方便使用其中任何一种方法。

获取数组大小的步骤

这里我们有一个表,其中包含月份列表和每个月的销售数量。

vba 数组长度
  1. 确保您有一个包含行和列的正确声明的表。
  2. 之后,还有两个变量(因为我们有一个二维数组)来存储数组的边界。
  3. 然后你需要使用一个公式,其中需要使用Ubound函数来获取数组的上限,然后使用Lbound函数来获取数组的下限。
  4. 由于您有一个二维数组,因此您需要绑定维度并在变量上设置该值。
  5. 最后,将 Ubound 和 Lbound 得到的长度相乘作为上限和下限。

这是完整的代码。

 Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2

注意:您一定想知道我在文章开头与您分享的表中是否总共有 13 行。

但我们使用了 13 行表,因为第一行是标题。在这里,我们使用IF 语句和 ISEMPTY函数来检查声明的数组是否不包含任何元素。

 Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."

使用COUNTA获取数组长度

如您所知,数组是一组以一维或多维方式构造的元素,您可以使用 COUNTA 函数(电子表格函数)一次对这些元素进行计数。

在以下代码中,您使用了之前声明的同一数组,然后使用变量来存储函数返回的元素数。

正如你所看到的,它返回的结果是 24,这是数组中元素的总数。

 Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount

您需要注意一件事,该方法并不适合在所有情况下使用,因此使用我们之前讨论的方法总是好的。

您还可以编写代码来首先检查声明的数组是否不为空。

 Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."

添加评论

您的邮箱地址不会被公开。 必填项已用 * 标注