IF Var1 = Var2 or Var 1 = Var3 or Var1 = 4 and VAr

Moin Moin,
Sorry das ich diese frage hier stelle aber ich habe gerade Kopfchaos:

Wenn ich eine IF Abfrage baue
und diese wie Folgt aussehen würde:

IF Var1 = 6 or Var1 = 10 or Var1 = 11 and Var2 = 0 then
msgbox „Treffer“
end if

Nun ist Var1 = 6 UND Var2 = 0 ist das ein „treffer“ ?
oder geht nur Var1 = 11 mit Var2 = 0 wegen dem and ?

mfg jonny

Moin, Joe,

IF Var1 = 6 or Var1 = 10 or Var1 = 11 and Var2 = 0 then
msgbox „Treffer“
end if

Nun ist Var1 = 6 UND Var2 = 0 ist das ein „treffer“ ?

Ja, die Var1 allein erfüllt schon die Bedingung, die weiteren Bedingungen werden dann gar nicht mehr geprüft.

oder geht nur Var1 = 11 mit Var2 = 0 wegen dem and ?

Sieh’s mal anders:

 IF Var1 = 6 or Var1 = 10 or (Var1 = 11 and Var2 = 0)

Gruß Ralf

Moin Jonny

Wenn ich eine IF Abfrage baue

Zunächst kannst du das auch mit einr CASE Abfrage lösen, aber bleiben wir bei IF

IF Var1 = 6 or Var1 = 10 or Var1 = 11 and Var2 = 0 then
msgbox „Treffer“
end if

Wenn Du deine Bedingungen in Klammern setzt, schaffst du Klarheit.

IF (Var1 = 6 or Var1 = 10 or Var1 = 11) AND (Var2 = 0)
then msgbox „Treffer“

Hier sieht man dass die Var1 Möglichkeiten mit AND an VAR 2 gebunden sind. D.h. nur wenn Var2 = 0 ist, wirken die richtigen Besetzungen von VAr 1.

Nun ist Var1 = 6 UND Var2 = 0 ist das ein „treffer“ ?

Richtig.

oder geht nur Var1 = 11 mit Var2 = 0 wegen DES and ?

Geht auch.
Das Gleiche erreichst du mit einer Matrix Zuweisung:
If Var1 in [6,10,11] AND Var2= 0 then …
Oder
CASE Var1 6 : …
10: …
11: …
ENDCASE
AND Var 2 = 0

Gruss
Rochus

IF Var1 = 6 or Var1 = 10 or Var1 = 11 and Var2 = 0 then

Nun ist Var1 = 6 UND Var2 = 0 ist das ein „treffer“ ?

Ja, die Var1 allein erfüllt schon die Bedingung, die weiteren
Bedingungen werden dann gar nicht mehr geprüft.

Hallo Ralf,

von Excel schon. Auch wenn die erste Bedingung erfüllt ist werden alle anderen Bedingungen der If-Zeile noch überprüft, wozu weiß ich nicht.

Andersrum auch,
If A1=1 And B1=5 And C1=3
dann wird die ganze Zeile ausgewertet, auch wenn A1 nicht 1 ist.

Gruß
Reinhard

1 Like

Moin, Rochus,

Wenn Du deine Bedingungen in Klammern setzt, schaffst du
Klarheit.

IF (Var1 = 6 or Var1 = 10 or Var1 = 11) AND (Var2 = 0)

aber nicht so :smile:))

Das AND bindet vorrangig, deshalb wäre

 IF Var1 = 6 or Var1 = 10 or (Var1 = 11 AND Var2 = 0)

äquivalent zu dem ursprünglichen Ausdruck. Ob der so gewollt war, ist eine andere Frage - unterstellen dürfen wir jedenfalls nichts.

Gruß Ralf

[ot] Auflösung von Bedingungen
Moin, Reinhard,

die weiteren
Bedingungen werden dann gar nicht mehr geprüft.

von Excel schon. Auch wenn die erste Bedingung erfüllt ist
werden alle anderen Bedingungen der If-Zeile noch überprüft,
wozu weiß ich nicht.

woran sieht man das?

Gruß Ralf

Danke !!
Ihr habt mich wieder etwas schlauer gemacht Klammern und MATRIX Zuweisungen OO…

vielen Dank

von Excel schon. Auch wenn die erste Bedingung erfüllt ist
werden alle anderen Bedingungen der If-Zeile noch überprüft,
wozu weiß ich nicht.

woran sieht man das?

Moin Ralf,

ups, das weiß ich nicht (mehr). Vielleicht an sowas:

Option Explicit
'
Sub test()
Dim T As Double, a, b, c, d, e, N As Double
Range("A1:B4").ClearContents

Range("A1").Value = Timer
For N = 1 To 1000000
 If a = b And b = c And c = d And d = e Then
 End If
Next N
Range("A2").Value = Timer
Range("A3").Value = Range("A2").Value - Range("A1").Value

Range("B1").Value = Timer
For N = 1 To 1000000
 If a = b Then
 If b = c Then
 If c = d Then
 If d = e Then
 End If
 End If
 End If
 End If
Next N
Range("B2").Value = Timer
Range("B3").Value = Range("B2").Value - Range("B1").Value

Range("A4:B4").NumberFormat = "0.0%"
Range("A4").Value = 1
Range("B4").Value = Range("B3").Value / Range("A3").Value
End Sub

Gruß
Reinhard