多个条件都等于相同值的IF语句的替代方法

时间:2018-09-12 15:01:44

标签: vba

有没有比这更好的方法了? (假设所有变量都等于零)

If var1 = 0 Or var2 = 0 Or var3 = 0 Or var4 = 0 Or var5 = 0 Or var6 = 0 Then
    'do something
End If

2 个答案:

答案 0 :(得分:5)

您可以使用Select Case进行操作。也会缩短评估(与If语句不同):

Select Case 0
    Case var1, var2, var3, var4, var5, var6
        'do something
End Select

答案 1 :(得分:3)

您可以编写一个短路功能,当找到与条件匹配的值时,该功能会自动退出:

Public Function MatchesAny(ByVal value, ParamArray values()) As Boolean
    Dim i As Long
    For i = LBound(values) To UBound(values)
        If values(i) = value Then
            MatchesAny = True
            Exit Function
        End If
    Next
End Function

现在您可以执行以下操作:

If MatchesAny(0, var1, var2, var3, var4, var5, var6) Then

如果在任何不符合条件的条件下需要纾困,那么可以使用逆逻辑来实现类似的功能:

Public Function MatchesAll(ByVal value, ParamArray values()) As Boolean
    MatchesAll = True
    Dim i As Long
    For i = LBound(values) To UBound(values)
        If values(i) <> value Then
            MatchesAll = False
            Exit Function
        End If
    Next
End Function

像这样使用:

If MatchesAll(0, var1, var2, var3, var4, var5, var6) Then