在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的列。 如果单元格包含一个零,我需要删除该列。 我的问题是当相邻的单元格包含零时。 代码将删除该单元格,具有零的前进行将向上移动,循环将移至下一行,缺less向上移动的零。

任何人都有这个解决scheme。

行是一个集合,所以当你遍历它并删除集合的一部分时,集合的上限就减less了。 自从循环开始以来,它的collections总是相同的大小。

长话短说:通过集合向后循环,即使从中删除了某些东西,也总是处于相同的相对位置:

 '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