AW: Feiertagsname anzeigen lassen für feste u. bewegl. Feiertage
08.01.2024 15:43:30
UweD
Hallo
Ich könnte dir das anbieten.
Option Explicit
Public Function FeierTag(Datum As Date, n As Boolean) 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" 'nicht in NRW
Case "01.05": FeierTag = "Tag der Arbeit"
'Case "15.08": FeierTag = "Mariä Himmelfahrt" 'nicht in NRW
Case "03.10": FeierTag = "Tag der Deutschen Einheit"
'Case "31.10": FeierTag = "Reformationstag" 'nicht in NRW
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" 'nicht in NRW
'Case -48: FeierTag = "Rosenmontag" 'nicht in NRW
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" 'nicht in NRW
Else
If n = True Then
FeierTag = "gewöhnlicher " & Format$(Datum, "DDDD") ' Kein Feiertag
ElseIf n = False Then
FeierTag = vbNullString ' Kein Feiertag
End If
End If
End Select
End Select
Else: FeierTag = vbNullString
End If
End Function
Public Function OsterSonntag(Datum As Date) As Date
Dim a As Integer, D As Integer, E As Integer, Jahr As Integer
Jahr = Year(Datum)
If (1904 Jahr) And (Jahr 2100) Then ' Datum zulässig ?
a = Jahr Mod 19
D = (19 * a + 24) Mod 30
E = (2 * (Jahr Mod 4) + 4 * (Jahr Mod 7) + 6 * D + 5) Mod 7
OsterSonntag = CDate(DateSerial(Jahr, 3, 22 + D + E))
If Month(OsterSonntag) = 4 Then
If Day(OsterSonntag) = 26 Or (Day(OsterSonntag) = 25 And E = 6 And a > 10) Then
OsterSonntag = OsterSonntag - 7
End If
End If
End If
End Function
Je nach Bundesland kannst die Weitere aktivieren
Aufgerufen in der Zelle wie folgt. (beachte den 2. Parameter)
Arbeitsblatt mit dem Namen 'Tabelle1' |
A | B |
08.01.2024 | gewöhnlicher Montag |
01.01.2023 | Neujahr |
| |
08.01.2023 | |
Zelle | Formel |
B1 | =feiertag(A1;1) |
B4 | =feiertag(A4;0) |
LG UweD