Bewegliche Feiertage automatisch berechnen

Für einen Kalender, den ich in Access 97 verwalte, möchte ich mir die variablen Feiertage wie Ostern und so weiter berechnen. Existiert dafür eine Formel?

Die genaue Berechnung der Ostertage hängt im wahrsten Sinne des Wortes vom Lauf des Mondes ab und ist dementsprechend schwierig. Zum Glück muß man sich die Mühe nicht mehr machen: Der Mathematiker Gauß hat bereits vor langer Zeit ein Verfahren gefunden, das als Eingabe nur die Jahreszahl braucht. Mit seiner Hilfe kann Access auch die variablen Ostertage ermitteln.
Die Umsetzung der Formel im Listing-Kasten oben ist in Visual Basic geschrieben und dementsprechend vielseitig anwendbar. Sie finden Sie als Textdatei auch auf der aktuellen WIN-Monats-CD und in den WIN-Online-Foren.
Die Funktion gibt als Rückgabewert den Ostersonntag als Datumswert wieder. Liegt dieser Tag erst einmal fest, können Sie die übrigen beweglichen Feiertage darauf aufbauend errechnen (Tabelle unten).
WIN-Autor Christian Hartnick arbeitet zur Zeit an einer DLL, die eine vollständige Kalenderberechnung enthält. Wir werden sie in einer der nächsten WIN-Ausgaben veröffentlichen.

Function OsterSonntag (This_Year As Integer)¶
Dim ZErg1, ZErg2, ZErg3, ZErg4, ZErg5, ZErg6, ZErg7¶
ZErg1 = This_Year Mod 19 + 1¶
ZErg2 = Fix (This_Year / 100) + 1¶
ZErg3 = Fix (3 * ZErg2 / 4) - 12¶
ZErg4 = Fix ((8 * ZErg2 + 5) / 25) - 5¶
ZErg5 = Fix (5 * This_Year / 4) - ZErg3 - 10¶
ZErg6 = (11 * ZErg1 + 20 + ZErg4 - ZErg3) Mod 30¶
If (ZErg6 = 25 And ZErg1 > 11) Or _¶
ZErg6 = 24 Then ZErg6 = ZErg6 + 1¶
ZErg7 = 44 - ZErg6¶
If ZErg7 < 21 Then ZErg7 = ZErg7 + 30¶
ZErg7 = ZErg7 + 7¶
ZErg7 = ZErg7 - (ZErg5 + ZErg7) Mod 7¶
If ZErg7 <= 31 Then¶
OsterSonntag = CDate (CStr (ZErg7) & _¶
ô. 3. ô & CStr (This_Year))¶
Else¶
OsterSonntag = DateValue (CStr (ZErg7 - 31) & _¶
ô. 4. ô & CStr (This_Year))¶
End If¶
End Function¶