与LIKE声明相反

时间:2016-03-08 21:30:58

标签: excel vba excel-vba

我在使用If NOT Like代码时遇到了一些问题。

以下是编码的部分内容。似乎编码正在显示正在查看的字段中具有 Rail 的第二条记录,但是在该字段之前或之后没有轨道的记录。

实际上,它应该在该领域的任何地方带来不包含铁路的记录,但它也不会这样做。任何反馈都表示赞赏。

Set rngData = Intersect(wsData.UsedRange, wsData.Range("A:K"))

    j = 1
    rngData.Rows(1).Copy Destination:=wsGalreq.Cells(j, 1)

    For i = 2 To rngData.Rows.Count
        If Not rngData.Cells(i, 11).Value = "SUPPLIER A" And rngData.Cells(i, 6).Value Like "*RAIL*" Then
            j = j + 1
            rngData.Rows(i).Copy Destination:=wsGalreq.Cells(j, 1)
        End If
    Next

2 个答案:

答案 0 :(得分:10)

您应该使用括号或逻辑来明确说明您的目标。

If Not rngData.Cells(i, 11).Value = "SUPPLIER A" And rngData.Cells(i, 6).Value Like "*RAIL*" Then

相同
If Not A And B

当你想要

If Not A And Not B

答案 1 :(得分:2)

作为VBA doesn't short circuit,最好先编写如下逻辑,更可能是 False 条件(因此冗余的第二次测试不会运行)。

所以

If Not A Then If Not B

或者在你的情况下;

If Not rngData.Cells(i, 11).Value = "SUPPLIER A" Then
    If Not rngData.Cells(i, 6).Value Like "*RAIL*" Then
            j = j + 1
            rngData.Rows(i).Copy Destination:=wsGalreq.Cells(j, 1)
    End If
 End If