Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Feiertage anzeigen

VBA Feiertage anzeigen
19.03.2018 17:17:24
john
Hallo zusammen,
ich suche nach einem Vba das mir die gesetzlichen Feiertage für Baden Württemberg anhand von einem Kalender mit fortlaufendem Datum anzeigt. Am besten wäre es wenn das Datum sich dann rot färben würde. Kann mir einer hier weiterhelfen?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Feiertage anzeigen
19.03.2018 17:38:43
onur
Meinst wohl einen Code und nich ein VBA - VBA ist die Programiersprache.
Meinst wahrscheionlich sowas wie eine Funktion Feiertage(Baden Württemberg,Deutschland,2018) - sowas gibt es nicht, must du selber machen.
AW: VBA Feiertage anzeigen
19.03.2018 17:40:57
Hajo_Zi

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

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: VBA Feiertage anzeigen
21.03.2018 10:01:40
john
Dankeschön!
Danke für die Rückmeldung oT
21.03.2018 16:12:43
Hajo_Zi
;
Anzeige
Anzeige

Infobox / Tutorial

Feiertage in Excel mit VBA anzeigen


Schritt-für-Schritt-Anleitung

Um die gesetzlichen Feiertage für Baden-Württemberg in Excel anzuzeigen, kannst Du eine VBA-Funktion verwenden. Gehe wie folgt vor:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle im Menü Einfügen die Option Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    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 = "1. Weihnachtstag"
           Case DateSerial(J, 12, 26)
               Feiertag = "2. Weihnachtstag"
           Case DateSerial(J, 12, 31)
               Feiertag = "Silvester*"
           Case Else
               Feiertag = ""
       End Select
    End Function
  4. Schließe den VBA-Editor und gehe zurück zu Deinem Excel-Arbeitsblatt.

  5. Verwende die Funktion =Feiertag(A1) in einer Zelle, wobei A1 das Datum ist, für das Du den Feiertag berechnen möchtest.


Häufige Fehler und Lösungen

  • Fehlermeldung "Typ nicht definiert": Stelle sicher, dass Du den Code korrekt eingefügt hast und keine Tippfehler vorhanden sind.
  • Funktion gibt nichts zurück: Überprüfe, ob das Datum in der richtigen Form vorliegt (z.B. als Datum formatiert).
  • Funktion findet Feiertage nicht: Achte darauf, dass Du die Funktion nur für Daten im Jahr 2018 oder für die entsprechenden Jahre verwendest, da die Feiertage variieren können.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch eine Liste deutscher Feiertage in Excel importieren. Diese Methode erfordert jedoch, dass Du die Feiertage manuell pflegen musst.

  1. Erstelle eine Excel-Liste mit den Feiertagen und deren Daten.
  2. Verwende die WVERWEIS-Funktion, um zu prüfen, ob ein Datum ein Feiertag ist:

    =WVERWEIS(A1, Feiertage!A:B, 2, FALSCH)

Hierbei ist Feiertage!A:B der Bereich, in dem Deine Feiertagsdaten gespeichert sind.


Praktische Beispiele

  • Für den 21.03.2018 kannst Du in einer Zelle =Feiertag(DATUM(2018,3,21)) verwenden, um zu überprüfen, ob es ein Feiertag ist.
  • Eine andere Möglichkeit ist, die Funktion für eine Liste von Daten zu verwenden, indem Du die Zelle nach unten ziehst.

Tipps für Profis

  • Nutze bedingte Formatierung, um Feiertage in Deinem Kalender farblich hervorzuheben. Wähle die Zellen aus und gehe zu Start > Bedingte Formatierung.
  • Du kannst die Funktion erweitern, um auch Feiertage für andere Bundesländer oder sogar für Österreich zu berechnen, indem Du zusätzliche Case-Anweisungen hinzufügst.

FAQ: Häufige Fragen

1. Wie kann ich die Feiertage für andere Jahre berechnen? Du musst die Logik für die Osterberechnung anpassen oder die Feiertagsdaten manuell eingeben.

2. Funktioniert dieser Code auch in Excel für Mac? Ja, die VBA-Funktion sollte auch in der Mac-Version von Excel funktionieren, solange Du den VBA-Editor verwenden kannst.

3. Kann ich die Feiertage für andere Bundesländer berechnen? Ja, Du musst dafür die spezifischen Feiertage für jedes Bundesland in die Funktion einfügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige