Hallöchen,
rechtzeitig vor dem nahenden Ende der Zeitumstellung habe ich hier mal noch einen Code zur Berechnung der Daten für die Umstellung auf Sommer- bzw. Winterzeit. Ich habe im Beispiel mit Application.Evaluate die Nutzung der Tabellenblattfunktionen genutzt. Man kann das natürlich auch direkt mit VBA-Befehlen wie DateSerial und DatePart verarbeiten, z.B. bei der Sommerzeit mit Sommerzeit = DateAdd("d", -DatePart("w", DateSerial(iJahr, 4, 1), vbMonday), DateSerial(iJahr, 4, 1)) ...
Ergänzung:
shift-del hat mich gerade darauf hingewiesen, dass es da auch schon vor 1980 vereinzelt Sommerzeiten gab. Siehe dazu
Wiki Sommerzeit
Der Code passt also erst ab 1980 und müsste für die alten Jahrgänge angepasst werden. Bei Anwendung auf andere Länder ist natürlich zu prüfen, wie dort die Zeiten verliefen.
Eine Formellösung findet Ihr z.B. in einer Liste der Excel-Kalender-Feier-und-andere-Tage
rechtzeitig vor dem nahenden Ende der Zeitumstellung habe ich hier mal noch einen Code zur Berechnung der Daten für die Umstellung auf Sommer- bzw. Winterzeit. Ich habe im Beispiel mit Application.Evaluate die Nutzung der Tabellenblattfunktionen genutzt. Man kann das natürlich auch direkt mit VBA-Befehlen wie DateSerial und DatePart verarbeiten, z.B. bei der Sommerzeit mit Sommerzeit = DateAdd("d", -DatePart("w", DateSerial(iJahr, 4, 1), vbMonday), DateSerial(iJahr, 4, 1)) ...
Ergänzung:
shift-del hat mich gerade darauf hingewiesen, dass es da auch schon vor 1980 vereinzelt Sommerzeiten gab. Siehe dazu
Wiki Sommerzeit
Der Code passt also erst ab 1980 und müsste für die alten Jahrgänge angepasst werden. Bei Anwendung auf andere Länder ist natürlich zu prüfen, wie dort die Zeiten verliefen.
Eine Formellösung findet Ihr z.B. in einer Liste der Excel-Kalender-Feier-und-andere-Tage
Option Explicit
'Hinweise:
'Zu Sommer/Winterzeiten siehe Wiki https://de.wikipedia.org/wiki/Liste_der_Sommerzeiten
'Sommerzeiten gab es bereits in Deutschland bereits 1916-1918 und 1945-1949
'1945-1949 und 1980 auch regional unterschiedlich (Ost / West und 1980 Büsingen)
Public Function Sommerzeit(Optional ByVal iJahr As Integer)
'Variablendeklarationen
Dim dAtum As Date
'Wenn nichts uebergeben wurde, dann das aktuelle Jahr nehmen
If iJahr = 0 Then iJahr = Year(Date)
'Sommer/Winterzeit gab's ab 1980
If iJahr > 1980 And iJahr < 2021 Then
Sommerzeit = Format(Application.Evaluate("DATE(" & iJahr & ",4" & _
",)-WEEKDAY(DATE(" & iJahr & ",4,),1)+1"), "DD.MM.YYYY")
'Aber 1980 ab dem 06.04.
ElseIf iJahr = 1980 Then
Sommerzeit = "06.04.1980"
'Ende Sommer/Winterzeit gab's ab 1980
End If
End Function
Public Function Winterzeit(Optional ByVal iJahr As Integer)
'Variablendeklarationen
Dim dAtum As Date, iMon As Integer
'Wenn nichts uebergeben wurde, dann das aktuelle Jahr nehmen
If iJahr = 0 Then iJahr = Year(Date)
'Sommer/Winterzeit gab's ab 1980
If iJahr >= 1980 And iJahr < 2021 Then
'Zeitumstellung bis 1995 am letzten Septemberwochenende, dann im Oktober
If iJahr <= 1995 Then iMon = 10 Else iMon = 11
Winterzeit = Format(Application.Evaluate("DATE(" & iJahr & "," & iMon & _
",)-WEEKDAY(DATE(" & iJahr & "," & iMon & ",),1)+1"), "DD.MM.YYYY")
'Ende Sommer/Winterzeit gab's ab 1980
End If
End FunctionVBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)