删除 Excel VBA 中的行

Deleting Rows in Excel VBA

以下举例说明了我正在尝试的代码 运行

For i = 5 To LastRow

Cells(i, 13).Select

    var2 = Cells(i, 13)

    If var2 = 0 Then

    Rows(i).Delete

    Else

    var3 = 1

    End If

Next i

基本上我有一列全是 1 和 0。如果单元格包含零,我需要删除该列。当相邻的单元格包含零时,我的问题就来了。该代码将删除该单元格,带有零的前一行将向上移动并且循环将移动到下一行,丢失向上移动的零。

任何人对此都有解决方案。

Rows 是一个 collection,因此当您遍历它并删除集合的一部分时,集合的上限会减少。自循环开始以来,它期望集合的大小始终相同。

长话短说:通过集合向后循环,然后即使您从中删除某些内容,您也将始终处于相同的相对位置:

'For i = LastRow To 5 step - 1

'Cells(i, 13).Select

' var2 = Cells(i, 13)

' If var2 = 0 Then

' Rows(i).Delete

' Else

' var3 = 1

' End If

'Next i