excel / VBA如何将数组的可变长度分配给整数变量

时间:2015-12-05 01:21:45

标签: arrays excel-vba variant vba excel

在excel / VBA中我有这段代码

Dim colName as Variant
Dim lengthToDispl as Integer
colName = Array("A", "B", "C")
lengthToDispl = colName.length

我收到以下错误' Object Required'。它与最后一行有关。

如何将变量长度数组(包含字符串)的长度赋给变量(整数)?

1 个答案:

答案 0 :(得分:3)

要返回数组'大小'的函数是UBound function,它返回上边界。这通常与其对应的LBound function一起使用,后者返回下边界

这可能会也可能不会返回您要查找的号码。一些数组排列为从零开始的索引,一些数组具有从一开始的索引。这取决于它们的声明和分配方式。

colName = Array("A", "B", "C")

上面创建了一个数组,其中包含从零开始的索引以及位置colName(0)colName(1)colName(2)中的三个元素。 UBound(例如UBound(colName))将返回2而不是3.要循环使用它,请同时使用LBound和UBound。

for i = LBound(colName) to UBound(colName)
    debug.print colName(i)
next i

从工作表的单元格中指定值时,即使您只是从单个列或行中收集值,也会得到一个基于单一的二维数组。另一个维度或排名只是 1到1

colName = Range("A1:C2").Value2

这将创建一个二维数组,其中包含一个基于一的索引,如ReDim colName (1 to 2, 1 to 3)

debug.print LBound(colName, 1) & " to " & UBound(colName, 1)
debug.print LBound(colName, 2) & " to " & UBound(colName, 2)

for i = LBound(colName, 1) to UBound(colName, 1)
    for j = LBound(colName, 2) to UBound(colName, 2)
        debug.print colName(i, j)
    next j
next i

我建议在处理数组元素时同时使用LBoundUBound