如何在具有多个条件的excel VBA中编写OR语句

时间:2014-06-04 05:41:50

标签: excel vba

如何在具有多个条件的excel VBA中编写OR语句。 我试了一下

For i = 1 To 30
a = Sheets("Interface").Range("A" & i).Value
If (Sheets("Interface").Range("A" & i).Value Like "Street*name") Or _
   (UCase(Sheets("Interface").Range("A" & i).Value) Like "Street*address") Or _
   (UCase(Sheets("Interface").Range("A" & i).Value) Like "address") Then
'If a Like "*Street*address*" Then
Sheets("Interface").Range("B" & i).Value = "STREETNAME"
End If
Next i

我尝试使用简单的street *地址语句(注释代码),但它没有进入真正的code.whats错误的代码。

2 个答案:

答案 0 :(得分:3)

这样的事情:

For i = 1 To 30

    a = UCase(Sheets("Interface").Range("A" & i).Value)

    If a Like "STREET*NAME" Or a Like "STREET*ADDRESS" Or _
                               a Like "ADDRESS" Then

        Sheets("Interface").Range("B" & i).Value = "STREETNAME"

    End If

Next i

答案 1 :(得分:0)

VB / VBA的问题在于,如果你写这样的复合或语句,VB将评估每个条件,即使发现第一个条件为True。它不会短路。

这有点不同寻常,但如果你想要一个短路方法,你可以使用Select Case,如下所示:

Select Case True
    Case a Like b, _
         a Like c, _
         a Like d, _

        Debug.Print "True"

    Case Else
        Debug.Print "False"

End Select
相关问题