Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Häufige Fragen

Ostersonntag - korrigiert

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: 20101223
Die bekannte Hetterichformel nach VBA umgesetzt: (Dankenswerter Weise wurde ich auf einen Fehler für das Jahr 2011 aufmerksam gemacht. Bei der Überprüfung ergaben sich dann weitere Fehler in bestimmten Jahre. Und es fiel mir wie Schuppen von denselbigen - klar, Excel hat ja das 1900 Schaltjahr Problem und das kann sich in bestimmten Situationen auswirken.

Option Explicit
 
Private Sub Teste_OsterSonntag()
 Dim iJahr As Integer
 iJahr = 2004
 MsgBox "Ostersonntag: " & iJahr & " am " & _
 Format(OsterSonntag(2004), "DD.MM.YYYY")
 'Kleiner Zusatz
 MsgBox "Pfingstsonntag: " & iJahr & " am " & _
 Format(OsterSonntag(2004) + 50, "DD.MM.YYYY")
End Sub
 
Public Function OsterSonntag(DasJahr As Integer) As Long
 'Frei nach der Hetterichformel
 'Angepasst für VBA Peter Haserodt
 'Ab Excel 2000 (VBA6) kann man Worksheetfuction.round
 ' durch Round ersetzen
 'Gibt das Datum als Longwert zurück
 ' Korrigiert, da in bestimmten Jahren die einfache
 ' Übersetzung der Hetterichformel zu Fehlern führt.
 'Dies liegt an der unterschiedlichen Behandlung des
 ' Jahres 1900 bezüglich seines Schaltjahres
 OsterSonntag = _
 WorksheetFunction.Round((CDate(Day(Minute(DasJahr / 38) / 2 + 55) + _
 (IIf(Minute(DasJahr / 38) / 2 + _
 55 < 60, 1, 0)) & ".4." & DasJahr) / 7), 0) * 7 - 6
End Function

Weitere Artikel der Gruppe: Häufige Fragen Aus Excel VBA
Nach oben