在for循环后无法获得excelmacros返回

我试图做一个小的代码,删除一个单元格中写入某些文本时,整个行。

Sub Delete_Rows() For Each c In Range("B1:B20").Cells If c.Value = "text" Then c.EntireRow.Delete End If Next c End Sub 

这是我在我的Excel表中写的

Excel表格

问题是,当我运行它,并删除一个单元格的条件满足,Excel自动滚动到下一行,没有评估当前单元格,它跳过这样

在这里输入图像描述

我再次运行它,只保留数字4和9中的“文本”

在我第三次运行它之后,它终于删除了写有“文本”的每个单元格。

我试图使用while循环,而不是select,使用整数来减去循环迭代和其他几种方式,并没有运气。

有任何想法吗?

两个选项是:

  1. 从下往上删除,或者
  2. 一次删除所有相关的行(如下所示):

 Sub Delete_Rows() Dim deleteRange As Range For Each c In Range("B1:B20") If c.Value = "text" Then If deleteRange Is Nothing Then Set deleteRange = c Else Set deleteRange = Union(c, deleteRange) End If End If Next c deleteRange.EntireRow.Delete End Sub