Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[Excel] Sommerzeit / Winterzeit
#1
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

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 Function


VBA/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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste