我正在使用此代码:
Dim r As Integer
For r = 1 To Sheet1.UsedRange.Rows.Count
If Cells(r, "Q") = "0" Then
Sheet1.Rows(r).EntireRow.Delete
End If
Next
问题是它没有删除所有内容,只删除了一些行,我必须多次按下使用此代码的按钮才能删除“Q”中所有“0”的实例
类似问题的答案
How to reverse a For loop
Delete Row based on Search Key VBA
答案 0 :(得分:5)
我很感激评论已经解决了这个问题,但为了完整起见,你需要颠倒for / next循环的顺序,如下所示:
Dim r As Integer
For r = Sheet1.UsedRange.Rows.Count to 1 step -1
If Cells(r, "Q") = "0" Then
Sheet1.Rows(r).EntireRow.Delete
End If
Next
以前的方式,通过删除列表开头的整行,您将所有内容向上移动一行。从底部向上开始,删除整行不会影响您尚未处理的项目的行号。
很高兴你把它分类了。