Kalender forever

Teil 5: VBA: Geburts-/Festtagskalender

26.9.2008 von Redaktion pcmagazin

ca. 2:30 Min
Ratgeber
  1. VBA: Geburts-/Festtagskalender
  2. Teil 2: VBA: Geburts-/Festtagskalender
  3. Teil 3: VBA: Geburts-/Festtagskalender
  4. Teil 4: VBA: Geburts-/Festtagskalender
  5. Teil 5: VBA: Geburts-/Festtagskalender
  6. Teil 6: VBA: Geburts-/Festtagskalender
  7. Teil 7: VBA: Geburts-/Festtagskalender
  8. Teil 8: VBA: Geburts-/Festtagskalender
  9. Teil 9: VBA: Geburts-/Festtagskalender
  10. Teil 10: VBA: Geburts-/Festtagskalender

Sobald der Anwender eines der beiden Dropdown- Listenfelder der Symbolleiste auf einen bestimmten Monat oder ein bestimmtes Jahr einstellt, startet Word das zugehörige KalenderErstellen- Makro. Es ermittelt zunächst die aktuellen Einstellungen der Dropdown-Listenfelder und aktualisiert daraufhin die Kalenderüberschrift, die den Monat und das Jahr des gewählten Kalenders anzeigt. Dazu ruft das Makro die Hilfsroutine TextmarkeErsetzen auf. Diese markiert den Inhalt der angegebenen Textmarke (die in diesem Fall MonatJahr heißt), ersetzt ihn durch den neuen Text und hinterlegt diesen dann wieder mit einer gleichnamigen Textmarke.

VBA: Geburts-/Festtagskalender
Schönheitsoperation: Wenn Ihnen die Schriftart des Kalenders nicht gefällt, können Sie sie interaktiv und mit WYSIWYG-Kontrolle ändern.
© Archiv

Anschließend widmet sich das KalenderErstellen- Makro der Generierung des gewünschten Monatskalenders. Zu diesem Zweck berechnet das Makro zunächst den Wochentag, auf den der erste Tag des gewählten Monats fällt. Die Nummer dieses Wochentags bestimmt zugleich die Tabellenspalte, in der das Makro mit der Ausgabe der Tageszahlen dieses Monats beginnt. Danach kalkuliert das Makro, wie viele Tage (intAnzahlTage) der jeweilige Monat hat. Da es dafür keine einschlägige VBA-Funktion gibt, bedient sich das Makro eines Tricks: Die Day-Funktion liefert eine Zahl zwischen 1 und 31, die angibt, auf welchen Tag eines Monats das als Argument übergebene Datum fällt. Der Trick besteht nun darin, die Nummer des "nullten" Tags des Folgemonats (!) berechnen zu lassen. Da es diesen Tag nicht gibt, liefert die Funktion stattdessen die Nummer des letzten Tags (mithin die Anzahl der Tage) im gewünschten Monat zurück.

Mit der Kenntnis der ersten Ausgabespalte und der Anzahl der Tage sind die notwendigen Eckdaten für die Kalendererstellung vorhanden. Das Makro bewegt sich per For-Next-Schleife zur errechneten Ausgabespalte und schreibt dort eine Eins (für den ersten Tag des Monats) in die Zelle. Danach bewegt es sich zur nächsten Zelle und schreibt dort eine Zwei hinein, und so weiter. Das Ganze wiederholt sich bis zur Ausgabe der letzten Tageszahl, die mit der kalkulierten Anzahl der Tage im jeweiligen Monat übereinstimmt.

In jeder Ausgabezelle prüft das Makro, ob der jeweilige Tag ein Feiertag ist. Dazu ruft es die benutzerdefinierte Funktion IstFeiertag auf. Die prüft jeweils, ob das als Argument übergebene Datum auf einen überregionalen Feiertag mit fixem beziehungsweise variablem Datum (siehe "Die Berechnung von Feiertagen") fällt. Trifft das zu, liefert die Funktion den Namen des Feiertags zurück, den das Makro in einer 6 Punkt kleinen Schrift hinter der Tageszahl in die Ausgabezelle einträgt.

Sofern das Kalenderdatum ein Feiertag ist (oder auf einen Sonntag fällt), weist das Makro dem gesamten Zellinhalt die Schriftfarbe Rot zu. Sollte der Feiertagsname allerdings das Kürzel "(z.T.)" enthalten, handelt es sich um einen regionalen Feiertag. In diesem Fall belässt es das Makro bei der voreingestellten Schriftfarbe Schwarz.

Im nächsten Schritt prüft KalenderErstellen, ob der jeweilige Kalendertag ein vom Anwender festgelegter Jahrestag ist. Dazu durchläuft die zuständige Funktion IstJahrestag sämtliche Dokumentvariablen in der Vorlage und prüft jeweils, ob das darin gespeicherte Datum mit dem Kalenderdatum übereinstimmt. Im Erfolgsfall liefert die Funktion eine kommagetrennte Liste mit allen Jahrestagsnamen zurück, die auf das jeweilige Datum fallen. Das Makro schreibt den Inhalt dieser Liste ebenfalls in einer 6 Punkt großen Schrift in die jeweilige Ausgabezelle.

Das Makro SchriftartWählen ist mit der gleichnamigen Schaltfläche in der vorlageneigenen Symbolleiste verknüpft. Die einzige Funktion des Makros besteht darin, das Userform-Dialogfeld frmSchriftwahl aufzurufen. Das Dialogfeld besteht im Wesentlichen aus einem Listenfeld (lstSchriftarten) für die interaktive Auswahl der Schriftart sowie den beiden Standardschaltflächen OK (cmdOK) und Abbrechen (cmdCancel).

Mehr lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

Mit unseren Tipps schießen Sie im Winter bessere Fotos.

Licht, Kälte und mehr

Fotografieren im Winter: 9 Tipps für bessere Fotos

Im Winter fordern Lichtverhältnisse, Motivumgebungen und Kälte Kamera und Fotografen. Wir verraten, worauf Sie achten müssen.

So kündigen Sie Ihre ADAC-Mitgliedschaft online per E-Mail.

Automobilclub

ADAC-Mitgliedschaft kündigen: So einfach geht's online…

Wer seine ADAC-Mitgliedschaft kündigen möchte, bekommt hier aktuelle Tipps. Wir zeigen Ihnen, wie das online per Formular oder E-Mail möglich ist.

Netflix

Kosten, Apps, Kündigung und Co.

10 wichtige Fragen zu Netflix in Deutschland

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.

PC & Laptop kühlen

BIOS-Tricks, Passivkühlung und mehr

PC-Lüfter leiser machen: Diese 6 Tipps helfen

Die Komponenten eines PCs erzeugen Hitze. Lüfter sorgen meist für eine lästige Geräuschkulisse. Mit unseren Tricks wird Ihr PC flüsterleise.

Rainbow Six: Siege (PC, PS4, Xbox One)

PC, PS4, Xbox One & Co.

Spiele-Releases 2015 - diese Games erscheinen im Dezember

Die Spiele-Releases im Dezember 2015 bieten wieder spannende Neuheiten für PC, PS4, Xbox One und mehr.