2017-03-28 56 views
3

我試圖做一些代碼,當某些文本寫入單元格時刪除整行。在for循環後無法獲得excel宏返回

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 sheet

問題是,當我運行它,並滿足刪除單元格中的條件,Excel會自動滾動到下一行不評估當前單元格,它跳過這樣

enter image description here

我又只有「文本」 FR運行om數字4和9仍然

我第三次運行它後,它終於刪除其中寫有「文本」的每個單元格。

我試着用一個while循環來代替,偏移選擇,使用一個整數來減去循環迭代和其他幾種方法,並沒有運氣。

任何想法?

回答

4

兩個選項:

  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