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



在excel/VBA中,我有以下代码

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

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

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

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

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

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

从工作表的单元格分配值时,即使只从单列或单行收集值,也会得到一个基于一维的二维数组。另一个维度或Rank只是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

我建议在处理数组的元素时同时使用LBound和UBound。

最新更新