我在让If NOT Like
代码工作时遇到了一些问题。
下面是编码的一部分。似乎编码带来了第二条记录,其中有铁路在实地正在被检查,但没有一个记录之前的轨道,或在那次之后。
在现实中,它应该带来的记录,不包含铁路在该领域的任何地方,但它也不这样做。如有任何反馈,将不胜感激。
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
发布于 2016-03-08 21:35:15
您应该使用括号或逻辑来显式地说明您所追求的目标。
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
发布于 2016-03-09 11:34:59
作为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
https://stackoverflow.com/questions/35878432
复制相似问题