Excel VBA简单如果没有声明

Jos*_*osh 3 excel vba if-statement excel-vba

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

除了我的"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
Run Code Online (Sandbox Code Playgroud)

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

cyb*_*shu 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
Run Code Online (Sandbox Code Playgroud)