Moin,
schön, dass du dich an VBA wagst – gerade bei Datum- und Zeitfunktionen kann es anfangs etwas knifflig sein. ??
Wenn du bereits einen Boolean hast, der dir zuverlässig zurückgibt, ob es Sommer- oder Winterzeit ist, dann musst du beim Erhöhen der Stunden eigentlich nur die Funktion DateAdd nutzen.
Die Syntax ist recht simpel:
Dim dt As Date dt = #5/27/1987 12:43:36 PM# If isSommerzeit = True Then ' Beispiel: 1 Stunde addieren dt = DateAdd("h", 1, dt) Else ' Beispiel: 2 Stunden addieren dt = DateAdd("h", 2, dt) End If MsgBox Format(dt, "dd.mm.yyyy hh:nn:ss")
Erklärung:
-
"h" steht für Stunden.
-
Der zweite Parameter ist die Anzahl der Stunden, die du draufrechnest (positiv = addieren, negativ = abziehen).
-
Der dritte Parameter ist deine Datumsvariable.
Du könntest die Logik natürlich auch umdrehen (z. B. im Winter nur +1 Stunde, im Sommer +2 Stunden), das hängt ganz von deiner Definition ab. Wichtig ist, dass du mit DateAdd nicht manuell am String schraubst, sondern die eingebaute Zeitrechnung von VBA nutzt – die kümmert sich auch automatisch um Dinge wie Minuten-/Tagesüberläufe.
Kleiner Tipp am Rande: Wenn du öfter mit Arbeitszeiten, Stundenzuschlägen oder ähnlichen Berechnungen arbeitest, lohnt sich ein Zeitrechner (gibt es online kostenlos). Damit kannst du unabhängig vom Code testen, wie sich verschiedene Zeitdifferenzen oder Zuschläge auf deine Stunden auswirken. Gerade wenn du erstmal ein Gefühl für die Berechnungen entwickeln willst, spart das viel Rumprobiererei.
|