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

Forumthread: if time kleiner gleich 23:59:59

if time kleiner gleich 23:59:59
christian
Hallo
ich hab ein problem. ich möchte gerne eine Auswahl treffen:
wenn am z.B. 01.01.2004 ab 22:00:00 Uhr Nachtschicht anfängt, dann arbeiten diese ja für den 02.01.2004, deswegen soll das Datum um eins erhöht werden.
da aber die Nachtschicht bis 06:00:00 Uhr geht soll ab 23:59:59 das Datum wieder normal angezeigt werden.
Da ich mit meiner gerad programmierten version, das Problem hab, dass
Time NICHT kleiner gleich 23:59:59 sein kann...
mit welchem vergleichswert geht so etwas?
P.S.

Sub date_change()
Dim zeit As Integer
Dim tag As Integer
zeit = Time
tag = date
If zeit > 22:00:00 And zeit <= 23:59:59 And Then tag = tag+1
Else tag = date
Cells(1,1) = tag
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: if time kleiner gleich 23:59:59
Heinz
Hallo Christian,
so z.B.

Sub date_change()
Dim zeit As Date
Dim tag As Date
zeit = Time
tag = Date
If zeit > "22:00:00" And zeit <= "23:59:59" Then
tag = tag + 1
Else
tag = Date
End If
Cells(1, 1) = tag
End Sub

Gruß
Heinz
AW: if time kleiner gleich 23:59:59
25.03.2004 10:29:07
christian
super spitze! da weiss man erst dass mir alle grundlagen fehlen
Also
zeit As Date, na da muss man mal draufkommen
Vielen Dank
Anzeige
AW: if time kleiner gleich 23:59:59
christian
Was muss ich denn verändern wenn diese date_change version immer ablaufen soll...
nicht dass man vergisst diese seite zu aktualisieren, und dass sich die excel datei auch im geöffneten zustand ändert, also immer..
?
AW: if time kleiner gleich 23:59:59
Heinz
Hallo Christian,
dazu müsste man wissen, auf was das Makro reagieren soll.
Z.B. wenn in der Tabelle "Test" ein Eintrag vorgenommen wird, dann musst du in das Klassenmodul der Tabelle "Test" (da kommst du z.B. hin, wenn du das Register mit der rechten Maustaste anklickst und Code anzeigen wählst) folgenden Code schreiben:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeit As Date
Dim tag As Date
zeit = Time
tag = Date
If zeit > "22:00:00" And zeit <= "23:59:59" Then
tag = tag + 1
Else
tag = Date
End If
Cells(1, 1) = tag
End Sub

also nur der Name der Prozedur muss w.o. heißen
Gruß
Heinz
Anzeige
AW: if time kleiner gleich 23:59:59
25.03.2004 11:31:56
christian
ja aber dass generell das prog im hintergrund läuft geht net?
Aber danke nochmal!
hast mir sehr weitergeholfen!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Uhrzeit vergleichen und Datum anpassen in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu überprüfen, ob eine Uhrzeit kleiner oder gleich 23:59:59 ist und das Datum entsprechend anzupassen, kannst du den folgenden Code verwenden. Dieser Vergleich ist besonders nützlich, wenn du mit Nachtschichten arbeitest.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.
  3. Kopiere den folgenden Code in das Modul:
Sub date_change()
    Dim zeit As Date
    Dim tag As Date
    zeit = Time
    tag = Date
    If zeit > "22:00:00" And zeit <= "23:59:59" Then
        tag = tag + 1
    Else
        tag = Date
    End If
    Cells(1, 1) = tag
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf "Ausführen" klickst.

Häufige Fehler und Lösungen

  • Fehler: Zeit wird nicht korrekt verglichen
    Stelle sicher, dass du die Zeit im richtigen Format angibst. Verwende Anführungszeichen um die Zeiten (z.B. "22:00:00").

  • Fehler: Datum wird nicht aktualisiert
    Wenn das Datum nicht aktualisiert wird, überprüfe, ob das Makro korrekt ausgeführt wird. Du kannst Debugging verwenden, um festzustellen, ob der Code in der If-Bedingung korrekt ausgeführt wird.


Alternative Methoden

Anstelle eines VBA-Makros kannst du auch Excel-Formeln verwenden, um die Uhrzeit zu vergleichen. Eine Möglichkeit wäre die Verwendung der WENN-Funktion:

=WENN(UND(A1>ZEIT(22,0,0), A1<=ZEIT(23,59,59)), HEUTE()+1, HEUTE())

In diesem Beispiel wird in Zelle A1 die Uhrzeit eingegeben, und die Formel gibt das angepasste Datum zurück.


Praktische Beispiele

  1. Beispiel für Nachtschicht: Wenn du eine Nachtschicht von 22:00 bis 06:00 hast, kannst du das obige Makro verwenden, um das Datum in Zelle A1 anzuzeigen.

  2. Beispiel für verschiedene Zeiträume: Du kannst das Makro anpassen, um auch andere Zeiträume zu vergleichen, indem du die Zeiten in den If-Bedingungen änderst.


Tipps für Profis

  • Automatisches Ausführen des Makros: Um das Makro automatisch im Hintergrund laufen zu lassen, musst du das Ereignis Worksheet_Change verwenden. Platziere dazu den folgenden Code im Klassenmodul der betreffenden Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
    Call date_change
End Sub
  • Ereignisgesteuertes Programmieren: Überlege, welche Änderungen in deiner Tabelle das Makro auslösen sollen, um unnötige Berechnungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Uhrzeit in einer Zelle automatisch aktualisieren?
Du kannst die Funktion =JETZT() verwenden, um die aktuelle Uhrzeit in einer Zelle anzuzeigen. Kombiniere sie mit einer WENN-Funktion, um weitere Bedingungen zu berücksichtigen.

2. Was passiert, wenn ich das Makro schließe?
Das Makro wird nur dann ausgeführt, wenn du es manuell startest oder es an ein Ereignis in Excel gekoppelt ist. Es bleibt nicht im Hintergrund aktiv, es sei denn, du implementierst das Ereignisgesteuerte Programmieren wie oben beschrieben.

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