X ist teilbar mit y dann z sonst a

Hallo,
Ich habe folgenden Code:

If AnzSpiele = 1 Or 3 Or 5 Or 7 Or 9 Or 11 Or 13 Or 15 Then
Spidx = 1
Else
Spidx = 0
End If

Dieser funktioniert nicht, wie er soll.
Er soll, wenn AnzSpiele 1,3,5,7,9,11,13 oder 15 ist Spidx = 1 setzen, wenn dies nicht der Fall ist soll er Spidx = 0 setzen. Er setzt aber Spidx = 1 und das immer, egal was AnzSpiele ist.

Was mache ich falsch?

Ich habe auch gehört, das es eine Funktion gibt die überprüft, ob die Prüfsumme durch z.B. 2 teilbar ist und eine natürliche Zahl bei rauskommt? Also so etwa:

If AnzSpiele / 2 = „Natürliche Zahl“ then

Spidx = 1
Else
Spidx = 0

End if

Kennt ihr die Formel dazu?

Ich bedanke mich für eure Hilfe!

Gruß
GURKE

Hallo Gurke,

nicht so

If AnzSpiele = 1 Or 3 Or 5 Or 7 Or 9 Or 11 Or 13 Or 15 Then

sondern so:
If AnzSpiele = 1 Or AnzSpiele = 3 Or AnzSpiele = 5 Or …

Ich habe auch gehört, das es eine Funktion gibt die überprüft,
ob die Prüfsumme durch z.B. 2 teilbar ist und eine natürliche
Zahl bei rauskommt? Also so etwa:

Spidx=AnzSpiele Mod 2

Gruß
Reinhard

Hallo,

If AnzSpiele = 1 Or 3 Or 5 Or 7 Or 9 Or 11 Or 13 Or 15 Then
Spidx = 1
Else
Spidx = 0
End If

Dieser funktioniert nicht, wie er soll.
Er soll, wenn AnzSpiele 1,3,5,7,9,11,13 oder 15 ist Spidx = 1
setzen, wenn dies nicht der Fall ist soll er Spidx = 0 setzen.
Er setzt aber Spidx = 1 und das immer, egal was AnzSpiele ist.

Was mache ich falsch?

Die Syntax.

1 Or 3 ist eine logische Verknüpfung.

Du wolltest schreiben:

If AnzSpiele = 1 Or AnzSpiele = 3 Or AnzSpiele = 5 …

Aber das ist ohnehin keine gute Lösung.

Ich habe auch gehört, das es eine Funktion gibt die überprüft,
ob die Prüfsumme durch z.B. 2 teilbar ist und eine natürliche
Zahl bei rauskommt? Also so etwa:

If AnzSpiele / 2 = „Natürliche Zahl“ then

Spidx = 1
Else
Spidx = 0

End if

Kennt ihr die Formel dazu?

Ja, genau. Modulo. :smile:

Spidx = AnzSpiele Mod 2

Gruß Rainer

Hallo Gurke,

Die Variante mit Mod ist schon elegant. Aber was ist wenn AnzSpiele = 17 ist? So wird SpidX auch auf 1 gesetzt. Willst du dies, so kannst du die Version nehmen. Willst du das SpidX nur bei ungeraden Zahlen und bis max.16 den Wert 1 bekommst, so musst du es etwas anders angehen :wink:

'Variante 1
Spidx=(AnzahlSpiele mod 2 =0) and (AnzahlSpiele

MfG Alex

Moin Reinhard

nicht so

If AnzSpiele = 1 Or 3 Or 5 Or 7 Or 9 Or 11 Or 13 Or 15 Then

sondern so:
If AnzSpiele = 1 Or AnzSpiele = 3 Or AnzSpiele = 5 Or …

Achso! Danke, werde ich bestimmt auch nochmal gebrauchen… :wink:

Ich habe auch gehört, das es eine Funktion gibt die überprüft,
ob die Prüfsumme durch z.B. 2 teilbar ist und eine natürliche
Zahl bei rauskommt? Also so etwa:

Spidx=AnzSpiele Mod 2

Sieht einfach aus :wink:

Danke!

Gruß
Reinhard

Gruß
GURKE

Moin Alex,

Die Variante mit Mod ist schon elegant. Aber was ist wenn
AnzSpiele = 17 ist? So wird SpidX auch auf 1 gesetzt. Willst
du dies, so kannst du die Version nehmen. Willst du das SpidX
nur bei ungeraden Zahlen und bis max.16 den Wert 1 bekommst,
so musst du es etwas anders angehen :wink:

'Variante 1
Spidx=(AnzahlSpiele mod 2 =0) and (AnzahlSpiele

Gut, werd ich mir merken hätte ich in zwei If-Sätzen gemacht, die nacheinander abgearbeitet werden. Allerdings hatte ich einfach nur keine Lust mehr or 17 or 19 … zu schreiben :wink:

MfG Alex

Gruß
GURKE

Die Variante mit Mod ist schon elegant. Aber was ist wenn
AnzSpiele = 17 ist? So wird SpidX auch auf 1 gesetzt. Willst
du dies, so kannst du die Version nehmen. Willst du das SpidX
nur bei ungeraden Zahlen und bis max.16 den Wert 1 bekommst,
so musst du es etwas anders angehen :wink:

'Variante 1
Spidx=(AnzahlSpiele mod 2 =0) and (AnzahlSpiele