Feiertage berechnen und berücksichtigen - Teil 1

Gültigkeitsprüfung

Nach erfolgter Berechnung schließt sich noch eine Gültigkeitsprüfung an. Sie prüft, ob ein gültiges Datum berechnet wurde und ob es sich dabei um einen Sonntag handelt. Schließlich kannOstersonntag nicht auf einen anderen Wochentag entfallen. Wird kein Fehler erkannt, wird das Datum, andernfalls eine Fehlermeldung zurückgegeben.

Zur Berechnung der anderen Osterfeiertage wie Ostermontag und Karfreitag benötigen Sie nun nur noch kleine Methoden, die die Methode Ostersonntag aufrufen und einen Tag dazu addieren beziehungsweise für Karfreitag 2 Tage abziehen (Listing 2).

Public Function Ostermontag(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Ostermontag = DateAdd("d", 1, varTemp)
Else
Ostermontag = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Karfreitag(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Karfreitag = DateAdd("d", -2, varTemp)
Else
Karfreitag = varTemp 'Fehlermeldung zurückgeben
End If
End Function

Analog dazu berechnen sich auch die anderen von Ostern abhängigen Feiertage wie Karneval, Himmelfahrt und Pfingsten (Listing 3).

Public Function Pfingstsonntag(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Pfingstsonntag = DateAdd("d", 49, varTemp)
Else
Pfingstsonntag = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Pfingstmontag(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Pfingstmontag = DateAdd("d", 50, varTemp)
Else
Pfingstmontag = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Rosenmontag(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Rosenmontag = DateAdd("d", -48, varTemp)
Else
Rosenmontag = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Fastnacht(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Fastnacht = DateAdd("d", -47, varTemp)
Else
Fastnacht = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Aschermittwoch(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Aschermittwoch = DateAdd("d", -46, varTemp)
Else
Aschermittwoch = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Himmelfahrt(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Himmelfahrt = DateAdd("d", 39, varTemp)
Else
Himmelfahrt = varTemp 'Fehlermeldung zurückgeben
End If
End Function
Public Function Fronleichnam(lngJahr As Long) As Variant
Dim varTemp As Variant
varTemp = Ostersonntag(lngJahr)
If IsDate(varTemp) Then
Fronleichnam = DateAdd("d", 60, varTemp)
Else
Fronleichnam = varTemp 'Fehlermeldung zurückgeben
End If
End Function