[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Berechnung beweglichen Festen und anderen Feiertagen

Sprache / Programm: VBA ab Office 95
Beschreibung

Gibt den Namen des Wochentages zurück oder, bei Feiertagen, den Namen des Feiertages. Bei normalen Tagen verhält sich das Programm wie die Funktion 'WeekDay'.

VBA-Quelltext
Public Function FeierTag(Datum As Date) As String
    Dim Jahr As Integer
    Jahr = Year(Datum)
    If (Jahr > 1904) And (Jahr < 2100) Then
        Select Case Format$(Datum, "dd.mm")
            ' Gesetzliche Feiertage
            Case "01.01": FeierTag = "Neujahr"
            Case "06.01": FeierTag = "Heilige Drei Könige"
            Case "01.05": FeierTag = "Tag der Arbeit"
            Case "15.08":  FeierTag = "Mariä Himmelfahrt"
            Case "03.10": FeierTag = "Tag der Deutschen Einheit"
            Case "31.10": FeierTag = "Reformationstag"
            Case "01.11": FeierTag = "Allerheiligen"
            Case "24.12": FeierTag = "Heiligabend"
            Case "25.12": FeierTag = "1. Weihnachtsfeiertag"
            Case "26.12": FeierTag = "2. Weihnachtsfeiertag"
            Case "31.12": FeierTag = "Sylvester"
            Case Else
                ' Bewegliche Feste:
                Select Case Datum - OsterSonntag(Datum)
                    Case -52: FeierTag = "Weiberfastnacht"
                    Case -48: FeierTag = "Rosenmontag"
                    Case -2:  FeierTag = "Karfreitag"
                    Case 0:  FeierTag = "Ostersonntag"
                    Case 1:  FeierTag = "Ostermontag"
                    Case 39:  FeierTag = "Christi Himmelfahrt"
                    Case 49:  FeierTag = "Pfingstsonntag"
                    Case 50:  FeierTag = "Pfingstmontag"
                    Case 60:  FeierTag = "Fronleichnam"
                    Case Else
                        If Datum = CDate("25.12." & Jahr) - WeekDay("25.12." & Jahr, _
vbMonday) - 32 Then FeierTag = "Buß- und Bettag"
                        Else
                            FeierTag = Format$(Datum, "ddd")  ' Kein Feiertag
                        End If
                End Select
        End Select
    Else: FeierTag = vbNullString
    End If
  End Function
Argumente der Funktion/Prozedur

Datum

Zu überprüfendes Datum.
Verwendete Variable

Jahr
Enthält das Jahr zum übergebenen Datum
Rückgabewert

Bezeichnung des Feiertages bzw. Wochentages

Hinweis

Zur Berechnung des Ostersonntags wird eine weitere Funktion als Unterprogramm benutzt.

Der ‘Buß- und Bettag‘ hängt vom Kirchenjahr ab und fällt auf den vorletzten Mittwoch vor dem 1. Advent.

Anwendungsgebiete, Fehler und Warnungen

Das Programm beschränkt sich auf die Jahre zwischen 1904 und 2099, da die Formeln von Gauß (Osterberechnung) einen Parameter enthalten, der vom Jahr abhängig ist und dieser nur für die Jahre 1900-2099 hinterlegt wurde. Zusätzlich haben verschiedene Programme Probleme mit dem Jahr 1900 (kein Schaltjahr) und beginnen daher mit der Datumsdefinition ab 1904.