Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

If-Abfrage mit Datumswerten

Forumthread: If-Abfrage mit Datumswerten

If-Abfrage mit Datumswerten
22.03.2020 22:36:56
Michael
Hallo zusammen,
ich verstehe Excel momentan nicht. Folgender Code:
Zeit = "00:00:05"
If Format(Now(), "hh:mm:ss") > "23:00:00" And Format(Now(), "hh:mm:ss")  "03:30:00" And Format(Now(), "hh:mm:ss")  "05:30:00" And Format(Now(), "hh:mm:ss") 

Meine Erwartung ist, dass die 1. If-Abfrage schon wahr ist, aber laut Excel ist die 3. If-Abfrage wahr. Kann mir das bitte jemand erklären.
Genauso verhält es sich zu Beispiel bei der Uhrzeit: "23:00:05". Hier würde ich auch erwarten, dass die 1. If-Abfrage wahr ist
Ich will folgendes mit dem Code erreichen:
Wenn es zwischen 23:00 Uhr und 03:30 ist, dann führe Code 1 aus, wenn es zwischen 03:30 und 05:30 ist, dann führe Code 2 aus und wenn es zwischen 05:30 und 23:00 Uhr ist, dann führe den 3. Code aus.
Für Hilfe wäre ich sehr dankbar.!
Gruß und Gute Nacht
Michael
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If-Abfrage mit Datumswerten
22.03.2020 23:23:49
Daniel
HI
das geht bei dir aber vieles durcheinander.
die Ursache für das von dir gefragte Problem ist, dass du für die If-Abfragen immer die Echtzeit verwendest, dh welcher Teil der IF-Abfrage ausgeführt wird, hängt davon ab um welche Uhrzeit du deinen Code testest und es völlig egal welchen Wert du der Variablen Zeit gibst, weil diese in den IF-Prüfungen nicht verwendet wird.
der erste Teil kann auch niemals WAHR werden, weil es unmöglich ist, dass eine Uhrzeit vor 3 und gleichzeitig nach 23 Uhr liegen kann. das ist völlig unmöglich.
aber auch sonst geht bei dir so einiges durcheinander.
in den ersten beiden IFs legst du die Startzeit als Text fest (Anführungszeichen!) im letzen aber als Uhrzeit und damit als Zahl. Du solltest dich da schon entscheiden, wie du arbeiten willst und auf einen Datentyp für die Variable NextStartTime festlegen.
nächste Unstimmigkeit:
im ersten IF-Block ist die Obergrenze für die Uhrzeit 3:30, aber die Ausführungszeit soll 3:00 sein.
Wenn es jetzt zufällig 3:15 ist wenn das Makro ausgeführt wird, läge die Startzeit ja am nächsten Tag!!!
dein Code ist irgendwie kompletter Müll.
zumal du auch nur eine Startzeit festlegst, aber nicht das Makro, welches ausgeführt werden soll.
Gruß Daniel
Anzeige
AW: If-Abfrage mit Datumswerten
23.03.2020 00:16:24
GerdL
Moin Michael!
Sub test()
Dim NextStartTime As Date, Zeit As Date
Zeit = Time()
If Zeit >= TimeSerial(23, 0, 0) Or Zeit  TimeSerial(3, 30, 0) And Zeit 

Gruß Gerd
AW: If-Abfrage mit Datumswerten
23.03.2020 08:48:33
Michael
Hallo Gerd,
vielen Dank für deinen Input. Ich habe in dem Code natürlich einen Fehler gemacht und nicht die Variable "Zeit" abgefragt. Zum Glück hast du mein Anliegen trotzdem verstanden.
Ich werde deinen Code mal testen und hier dann eine Rückmeldung geben.
Gruß Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

If-Abfragen mit Datumswerten in Excel


Schritt-für-Schritt-Anleitung

Um eine If-Abfrage mit Datumswerten in Excel korrekt zu erstellen, kannst du folgende Schritte befolgen:

  1. Variable deklarieren: Lege die benötigten Variablen fest. In diesem Fall benötigst du eine Variable für die aktuelle Zeit.

    Dim NextStartTime As Date, Zeit As Date
  2. Aktuelle Zeit abrufen: Setze die Variable Zeit auf den aktuellen Zeitpunkt.

    Zeit = Time()
  3. If-Abfrage erstellen: Baue die If-Abfrage so auf, dass du die Zeit korrekt vergleichst. Achte darauf, dass du die Zeiten mit TimeSerial angibst.

    If Zeit >= TimeSerial(23, 0, 0) Or Zeit < TimeSerial(3, 30, 0) Then
       ' Code 1 ausführen
    ElseIf Zeit >= TimeSerial(3, 30, 0) And Zeit < TimeSerial(5, 30, 0) Then
       ' Code 2 ausführen
    Else
       ' Code 3 ausführen
    End If
  4. Testen: Führe den Code aus und teste die If-Abfrage zu verschiedenen Zeiten.


Häufige Fehler und Lösungen

1. Ungültige Zeitvergleiche
Ein häufiger Fehler ist, dass die If-Abfragen nicht korrekt formuliert sind, sodass sie in unlogischen Zeitfenstern liegen. Achte darauf, dass die Logik deiner Bedingungen konsistent ist.

2. Verwendung von Text anstelle von Zeit
Stelle sicher, dass du Zeitwerte als echte Zeit und nicht als Text behandelst. Beispielsweise sollte TimeSerial(23, 0, 0) verwendet werden, anstatt die Zeit in Anführungszeichen zu setzen.

3. Variablen nicht korrekt abfragen
Überprüfe, ob du die Variablen korrekt verwendest, wie Michael in seinem Beispiel, wo Zeit nicht in der Abfrage verwendet wurde.


Alternative Methoden

Wenn du Excel-Daten abfragen möchtest, kannst du auch die Funktionen WENN oder WENNFEHLER verwenden, um simplerere Bedingungen zu erstellen. Für komplexe Zeitvergleiche ist das VBA-Skript jedoch effektiver.


Praktische Beispiele

Ein Beispiel für eine If-Abfrage in Excel VBA könnte wie folgt aussehen:

Sub ZeitAbfrage()
    Dim AktuelleZeit As Date
    AktuelleZeit = Time()

    If AktuelleZeit >= TimeSerial(23, 0, 0) Or AktuelleZeit < TimeSerial(3, 30, 0) Then
        MsgBox "Es ist Nacht!"
    ElseIf AktuelleZeit >= TimeSerial(3, 30, 0) And AktuelleZeit < TimeSerial(5, 30, 0) Then
        MsgBox "Es ist frühe Morgenstunden!"
    Else
        MsgBox "Es ist Tag!"
    End If
End Sub

Tipps für Profis

  • Testen unter verschiedenen Bedingungen: Teste deine Abfragen zu verschiedenen Tageszeiten, um sicherzustellen, dass sie in allen Fällen korrekt funktionieren.
  • Verwendung von Debugging: Nutze die Debugging-Tools in Excel VBA, um mögliche Fehler in der Logik deiner If-Abfragen schnell zu identifizieren.
  • Dokumentation: Halte deinen Code gut kommentiert, um die Logik hinter den Abfragen auch später nachvollziehen zu können.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Bedingungen in einer If-Abfrage kombinieren?
Du kannst mehrere Bedingungen mit And oder Or verknüpfen. Achte darauf, die Logik klar zu definieren.

2. Was passiert, wenn die Zeit genau auf den Grenzwerten liegt?
In den If-Abfragen solltest du die Grenzwerte mit >= oder < entsprechend festlegen, um sicherzustellen, dass die richtigen Codes ausgeführt werden.

3. Kann ich die If-Abfrage auch ohne VBA durchführen?
Ja, du kannst ähnliche Logiken mit den Funktionen WENN oder WENNS in Excel-Tabellen erstellen, jedoch sind diese für komplexere Zeitvergleiche weniger geeignet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige