删除不包含部分string的单元格? 错误

我有一个excel列中的文件path和名称的长列表。 我正在处理一个代码,以删除不包含任何我已经放在数组中的任何部分string的单元格。 我得到一个错误“范围类的删除方法失败”。 我对VBA非常陌生,所以任何提示都会被赞赏,这里是我到目前为止:

Sub Tester() Dim dontDelete As Variant Dim sKeep As String, x As Long Dim rngSearch As Range, c As Range Dim i As Long, j As Long dontDelete = Array("abel", "varo") For x = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 For j = LBound(dontDelete) To UBound(dontDelete) Set c = Range("A" & x).Cells If InStr(c.Value, dontDelete(j)) = 0 Then c.Delete shift:=xlShiftUp End If Next j Next x End Sub 

我相信这是“c.Delete转移:= xlShiftUp”,这是造成这个问题,但我不知道为什么?

只有在数组中没有string被包含时才删除单元格的代码,而不是删除不包含所有单元格的每个单元格:

 Sub Tester() Dim dontDelete As Variant Dim sKeep As String, x As Long Dim rngSearch As Range, c As Range Dim i As Long, j As Long dontDelete = Array("abel", "varo") Dim deleteCell As Boolean For x = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 Set c = Range("A" & x).Cells deleteCell = True For j = LBound(dontDelete) To UBound(dontDelete) If InStr(c.Value, dontDelete(j)) Then deleteCell = False End If Next j If deleteCell Then c.Delete shift:=xlShiftUp Next x End Sub 

这并不能解决错误,但错误不是由代码本身引起的,所以用另一种方式解决了。