为什么我无法在0处启动for循环?
Dim counter As Integer
For counter = 1 To 10
Cells(0, counter).Value = arr(counter)
Next counter
这将错过数组中的第一个索引。
这个问题是否有任何可能的解决方案?
答案 0 :(得分:2)
您可以使用 Option Base 1 ,但它无法控制数组索引的内容和方式。
Split function始终会创建一个从零开始的单维数组,无论您是否已将默认值更改为Option Base 1
。
将变量数组中的批量加载工作表.Value始终生成基于1的二维数组,无论您是显式设置Optiona Base 0
还是仅引用单行或单列单元格。
我发现最好始终使用LBound和UBound函数来获取数组的范围。调整数字,这样您就不会尝试引用单元格A0或类似的东西(例如#REF!
)。
Dim counter As Long
debug.print Lbound(arr) & ":" & uBound(arr)
For counter = LBound(arr) To UBound(arr)
Cells(1, counter + 1).Value = arr(counter)
Next counter
答案 1 :(得分:1)
作为@Ralph指出的替代方法,您可以使用Offset
的{{1}} - 因此两者 - 您的数组和范围引用将从0开始:
Range
P.S。:避免命名数组Dim counter As Integer
For counter = 0 To 9
Cells(1, 1).Offset(0, counter).Value = arr(counter)
Next counter
,因为存在具有相同名称的VBA函数。您可以使用类似array
的内容。
答案 2 :(得分:0)
...简单
Dim counter As Integer
For counter = 1 To 10
Cells(1, counter).Value = array(counter - 1)
Next counter