我正在尝试运行一个相对简单的循环来从列表中提取我不想要的值。
除了我的“Not”语句之外,以下所有内容都正常工作,但不会产生错误......
它似乎根本没有做任何事情。
Set myRange = Range("A49:A150")
For Each myCell In myRange
If myCell Like "*msn.com*" Or _
myCell Like "*messaging.microsoft.com*" Or _
Not myCell Like "*.com*" Then
myCell.Delete
End If
Next myCell
我很确定我在这里有一个简单的错误,但我一直无法找到它。
答案 0 :(得分:11)
它不是Not
声明。您的问题是,当您删除单元格时,您会更改范围,因此您的循环缺少数据。如果删除了单元格A49,则A50处的值最多移动到A49,并且从不检查。汇总有资格被删除的单元格,然后一次删除它们。
Sub test()
Dim rngDelete As Range
Set myrange = Range("A1:A3")
For Each mycell In myrange.Cells
If mycell Like "*msn.com*" Or _
mycell Like "*messaging.microsoft.com*" Or _
Not mycell Like "*.com*" Then
If Not rngDelete Is Nothing Then
Set rngDelete = Union(rngDelete, mycell)
Else
Set rngDelete = mycell
End If
End If
Next mycell
If Not rngDelete Is Nothing Then
rngDelete.Delete
End If
End Sub