2 votes

Alternative à l'instruction IF avec plusieurs conditions qui sont toutes égales à la même valeur.

Existe-t-il une meilleure méthode que celle-ci ? (en supposant que toutes les variables seront égales à zéro)

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

5voto

Comintern Points 16443

Vous pouvez le faire avec un Select Case . Il court-circuite également l'évaluation (contrairement au If ) :

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

3voto

retailcoder Points 3056

Vous pourriez écrire une fonction de court-circuitage qui s'arrête lorsqu'elle trouve une valeur correspondant aux critères :

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

Et maintenant vous pouvez le faire :

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

Et si vous avez besoin de vous renflouer lorsque n'importe quelle valeur n'a pas correspondent aux critères, alors vous pouvez avoir une fonction similaire avec la logique inverse :

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

Utilisé comme ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X