ich habe mir dank des Forums, einen Kalender in einer Userform aufgesetzt, zu denen ich gern noch die Feiertage angezeigt haben möchte, an dessen Herausforderung ich scheitere.
Zur Berechnung der Feiertage habe ich eine Funktion gefunden. Um sie zu verstehen, habe ich sie in die Berechnung der Nettoarbeitstage eingebunden, jedoch erscheint da eine Fehlermeldung.
Noch viel größer ist die Herausforderung, die Feiertage im Kalender anzuzeigen (farbig), wer kann mir dazu weiterhelfen?
Hier die Datei https://www.herber.de/bbs/user/154703.xlsm
Sub Datum_ermitteln()
Dim x As Byte, letzterTag As Byte
a = DateValue("1 " & UserForm1.Monat & " " & UserForm1.Jahr)
letzterTag = Day(DateSerial(Year(a), Month(a) + 1, 0))
Nettoarbeitstage = WorksheetFunction.NetworkDays(a, DateValue(letzterTag & " " & UserForm1.Monat & " " & UserForm1.Jahr), Feiertag)
ersterMontag = a - Day(a) - Weekday(a - Day(a), vbMonday) + 8
If Day(ersterMontag + 1)
Function Feiertag(Datum As Date) As String
Dim J%, D%
Dim O As Date
J = Year(Datum)
'Osterberechnung
D = (((255 - 11 * (J Mod 19)) - 21) Mod 30) + 21
O = DateSerial(J, 3, 1) + D + (D > 48) + 6 - _
((J + J \ 4 + D + (D > 48) + 1) Mod 7)
'Feiertage berechnen
Select Case Datum
Case DateSerial(J, 1, 1)
Feiertag = "Neujahr"
Case DateSerial(J, 1, 6)
Feiertag = "Dreikönig*"
Case DateAdd("D", -2, O)
Feiertag = "Karfreitag"
Case O
Feiertag = "Ostersonntag"
Case DateAdd("D", 1, O)
Feiertag = "Ostermontag"
Case DateSerial(J, 5, 1)
Feiertag = "Erster Mai"
Case DateAdd("D", 39, O)
Feiertag = "Christi Himmelfahrt"
Case DateAdd("D", 49, O)
Feiertag = "Pfingstsonntag"
Case DateAdd("D", 50, O)
Feiertag = "Pfingstmontag"
Case DateAdd("D", 60, O)
Feiertag = "Fronleichnam*"
Case DateSerial(J, 8, 15)
Feiertag = "Maria Himmelfahrt*"
Case DateSerial(J, 10, 3)
Feiertag = "Deutsche Einheit"
Case DateSerial(J, 11, 22) - (DateSerial(J, 11, 18) Mod 7)
Feiertag = "Buß- und Bettag*"
Case DateSerial(J, 10, 31)
Feiertag = "Reformationstag*"
Case DateSerial(J, 11, 1)
Feiertag = "Allerheiligen*"
Case DateSerial(J, 12, 24)
Feiertag = "Heilig Abend*"
Case DateSerial(J, 12, 25)
Feiertag = "EWeihnacht"
Case DateSerial(J, 12, 26)
Feiertag = "ZWeihnacht"
Case DateSerial(J, 12, 31)
Feiertag = "Silvester*"
Case Else
Feiertag = ""
End Select
End Function