在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。