Excel vba如果单元格包含文本,则删除行

时间:2014-02-02 19:23:16

标签: excel vba excel-vba

我正在使用此代码:

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

1 个答案:

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

以前的方式,通过删除列表开头的整行,您将所有内容向上移动一行。从底部向上开始,删除整行不会影响您尚未处理的项目的行号。

很高兴你把它分类了。