Kalendererstellung mit Excel

Kennen Sie auch das Problem. Sie möchten einen Kalender erstellen, in dem Sie Arbeitstage etc. eintragen. Von Hand ist das Problem viel Arbeit und diese fällt jedes Jahr wieder an. Ich hatte das Problem auch und habe mir einen immerwährenden Kalender in der Excel Programmiersprache VBA geschrieben. Der kalender beruht auf der Gausschen Osterformel.


Die Funktionen

Basis des Kalenders sind drei neue Funktionen:

  1. ISTARBEITSTAG(Datum) => falsch, wenn das Datum ein Feiertag, Samstag oder Sonntag ist.
  2. ISTARBEITSTAGNAME(Datum) => Name des Tages z.B. Sa, So, Mo, Ostern
  3. TAGESNUMMER(Datum) => Nummer des Tages im Jahr.

Die Funktion ISTARBEITSTAG klär, ob ein bliebiges Datum ein Arbeitstag ist. Dabei werden gesetzliche Feiertage (in Bayern) und die beweglichen Feiertage (Ostern; Pfingsten; Himmelfahrt) berücksichtigt. Als Ergebnis wird "Wahr" oder "Falsch" zurückgegeben. Damit kann zum Beispiel eine die Kalenderfarbe für Feiertage gesteuert werden.

Die Funktion ISTARBEISTAGNAME gibt an um welchen Tag es sich handelt, wenn man das Datum übergibt. Also z.B. "Karfreitag oder Ostern".

Mit diesen beiden Funktionen hat man schon fast das ganze Rüstzeug zusammen, um einen immerwährenden Kalender zu basteln.


Beispiel

Damit das Ganze nicht so trocken ist hier nun mein  Link Excel Beispiel

Im Beispiel werden mehrere Excel Funktionen mit den neuen Funktionen kombiniert. Ich erwähne das deshalb, weil die meisten Excel Benutzer diese Funktionen nicht kennen und deshalb auch nicht anwenden.


Wichtiges

Das ganze funktioniert aber nur über ein Makro, das in die Excel Tabelle vorher eingebunden werden muß. Die Makrofunktionen müssen dabei erlaubt sein (Achtung Risiko wegen Makroviren). Das Makro erreicht man durch gleichzeitiges Drücken von [ALT]+ [F11] unter Module. Hier können auch die Feiertage individuell an das Land und die Stadt angepasst werden. Die Anpassung muß zweimal geschehen.

Würde sich der Tag der deutschen Einheit z.B. auf den 4.11. verschieben müsste wie folgt geändert werden.

' Feststehende Feiertage -------------------------------------------------

  • If Day(Datum) = 1 And Month(Datum) = 1 Then 'Neujahr
  • ISTARBEITSTAGText = "Neujahr"
  • ElseIf Day(Datum) = 1 And Month(Datum) = 5 Then '1. Mai
  • ISTARBEITSTAGText = "1. Mai"
  • ElseIf Day(Datum) = 15 And Month(Datum) = 8 Then 'Mariä Himmelfahrt
  • ISTARBEITSTAGText = "Mariä Himmelfahrt"
  • ElseIf Day(Datum) = 4 And Month(Datum) = 11 Then 'Tag der Dt. Einheit
  • ISTARBEITSTAGText = "Tag der Deuschen Einheit"
  • ElseIf Day(Datum) = 1 And Month(Datum) = 11 Then 'Allerheiligen
  • ISTARBEITSTAGText = "Allerheiligen"