excel/VBA如何将数组的可变长度分配给整数变量
Posted
技术标签:
【中文标题】excel/VBA如何将数组的可变长度分配给整数变量【英文标题】:excel/VBA how to assign the variable length of an array to integer variable 【发布时间】:2015-12-05 01:21:44 【问题描述】:在 excel/VBA 我有这个代码
Dim colName as Variant
Dim lengthToDispl as Integer
colName = Array("A", "B", "C")
lengthToDispl = colName.length
我收到以下错误“需要对象”。它与最后一行有关。
如何将可变长度(包含字符串)数组的长度分配给变量(整数)?
【问题讨论】:
lengthToDispl = ubound(colName)
应该这样做。
fwiw,数组中第一个字符串的长度是Len(colName(0))
。
【参考方案1】:
您要返回数组“大小”的函数是UBound function,它返回上边界。这通常与其对应的 LBound function 一起使用,它返回 Lower Boundary。
这可能会或可能不会返回您正在寻找的号码。一些数组以从零开始的索引排列,而另一些则以从一开始的索引排列。这取决于它们的声明和分配方式。
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 开始的二维数组,即使您只是从单个列或行中收集值。另一个维度或 Rank 只是 1 比 1。
colName = Range("A1:C2").Value2
这将创建一个二维数组,其索引从 1 开始,如 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。
【讨论】:
以上是关于excel/VBA如何将数组的可变长度分配给整数变量的主要内容,如果未能解决你的问题,请参考以下文章