我有一个工作表,其中包含 A 列和第 1 行中的条目:
可以使用以下代码通过 A 列中的任意数量的条目运行 For 循环:
For i = 1 To Worksheets("Sheet1").Range("A1").End(xlDown).Row
'' Do whatever
Next i
但是不可能使用下面的代码通过第 1 行中的任意数量的条目运行 For-Loop,我的问题是为什么?
For i = 1 to Worksheets("Sheet1").Cells(1).End(xlRight).Column
'' Do whatever
Next i
答案 0 :(得分:3)
因为它是xlToRight
而不是xlRight
反正我推荐使用
Worksheets("Sheet1").Cells(1, Worksheets("Sheet1").Columns.Count).End(xlToLeft).Column
和
Worksheets("Sheet1").Cells(Worksheets("Sheet1").Rows.Count, "A").End(xlUp).Row
找到最后使用的列/行,因为即使有空格也是可靠的。
答案 1 :(得分:2)
xlRight
常量不适合在这样的代码中使用它。正确的应该是 xlToRight
。
但是如果要处理的行中存在空单元格,则使用这种方式并不是最好的方式。
这就是为什么,下一个应该是更好的解决方案:
Sub testIterateThroughColumns()
Dim sh As Worksheet, i As Long
Set sh = Worksheets("Sheet1")
For i = 1 To sh.cells(1, sh.Columns.count).End(xlToLeft).row
'do what you need...
Next i
End Sub