Fehler in der if Bedingung

Angelika_25

Mitglied
Hallo, ich habe eine if-Bedingung, in der anscheinend irgend ein Fehler vorhanden ist, denn eigentlich müsste er in den ersten Zweig hinein, geht aber in den else Fall.
Hier meine If-Anweisung:
Code:
If Optionen.CheckBox2.Checked = True And wochentag Is montag Or _
        Optionen.CheckBox1.Checked = True And wochentag Is dienstag Or _
        Optionen.CheckBox5.Checked = True And wochentag Is mittwoch Or _
        Optionen.CheckBox7.Checked = True And wochentag Is donnerstag Or _
        Optionen.CheckBox6.Checked = True And wochentag Is freitag Or _
        Optionen.CheckBox4.Checked = True And wochentag Is samstag Or _
        Optionen.CheckBox3.Checked = True And wochentag Is sonntag Then

   Timer1.Start()

else
 MsgBox("Heute geht nichts!")
        End If
Um das kurz zu erklären, wochentag ist der aktuelle Tag, den ich so ermittelt habe:
Ich habe eine Funktion in ein Modul geschrieben:
Code:
Function GetWochentag(ByVal dtmDate As Date) As String
        GetWochentag = Format$(dtmDate, "dddd")
    End Function

Danach in die Load Prozedur meines ersten Formulars:
Code:
wochentag = GetWochentag(Now)
montag, dienstag usw. sind String Variablen, die mit "Montag", "Dienstag" usw. deklariert werden.
Ich denke, das sind alle Infos, die man benötigt um eigentlich die if-Bedingung richtig zu machen. Wie gesagt, mein Programm springt in den Else Fall, auch wenn die Häkchen richtig stehen.

Wäre über eine Hilfe sehr dankbar.

Liebe Grüße
 
Ich bin mir nicht ganz sicher, aber wäre es nicht sinnvoller, die Wochentage auf Wertgleichtheit zu kontrollieren und nicht auf Instanzgleichheit. Ich kenn mich mit VB net so aus, aber Is hört sich eher so an, als ob es die Instanzen auf Gleichheit überprüfen würde und die müssen auch bei gleichem Wert nicht gleich sein, ich habe aber vergessen, wie das bei Strings war. Des weiteren würde ich die ganze Sache ein wenig klammern, also so wie

Code:
If (CheckBox2.Checked And wochentag="Montag") Or _
        (CheckBox1.Checked And wochentag="Dienstag") Or _ ...

und so weiter eben. Sollte klappen. im ersten Teil sparst du dir einen Vergleich, find ich ganz sinnvoll die schreibweise und der Vergleich gibt dir auch nur ein True oder False zurück. Wenn die Logischen Verknüpfungen denen in C# ähnlich sind, dann bricht deine Abfrage wenn CheckBox2 nicht angeklickt ist von vornerein ab. Wie die weitere verknüpfung ist, bin ich mir nicht ganz sicher, Mathe Logik ist ne Weile her, aber es macht nicht das, was ich jetzt vermute, was du willst, dass es macht. Du willst ja immer eine Checkbox zusammen mit einem Wochentag abfragen, diese Abfragen machst du durch die Klammern einzeln und veroderst das ganze dann am Ende. Wenn eine deiner Subbedingungen wahr ist ist dann der gesamte Ausdruck wahr und er spring in den ersten Block.
 
Freut mich, dass ich helfen konnte. Und dafür gibt es ja solche Foren, falls die Sachen nicht auf Anhieb funktionieren ;)

Grüße , Paul
 

Neue Beiträge

Zurück