删除循环中的行或列

如果要删除循环中的行(或列),则应始终从范围的末尾开始循环,然后在每个步骤中向后移动。如果使用代码:

Dim i As Long
With Workbooks("Book1").Worksheets("Sheet1")
    For i = 1 To 4
        If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete
    Next i
End With

你会错过一些行。例如,如果代码删除第 3 行,则第 4 行将变为第 3 行。但是,变量 i 将更改为 4.因此,在这种情况下,代码将错过一行并检查另一行,这在先前不在范围内。

正确的代码将是

Dim i As Long
With Workbooks("Book1").Worksheets("Sheet1")
    For i = 4 To 1 Step -1
        If IsEmpty(.Cells(i, 1)) Then .Rows(i).Delete
    Next i
End With