Excel VBA简单如果不是语句

我试图运行一个相对简单的循环来提取我不想从列表中的值。

下面的一切工作正常,除了我的“不”的声明,不会产生错误…

它似乎并没有做任何事情。

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 

我相当肯定我在这里有一个简单的错误,但我一直无法find它。

它不是Not语句。 你的问题是,当你删除单元格,你的范围变化,所以你的循环缺less数据。 如果单元格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