For 循环遍历一行

时间:2021-07-14 06:52:04

标签: excel vba

我有一个工作表,其中包含 A 列和第 1 行中的条目:

enter image description here

可以使用以下代码通过 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

2 个答案:

答案 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