Listenzeilen wertabhΣngig einfΣrben

Ich verwende die in der Ausgabe 12/97 vorgestellte Funktion zur Berechnung der beweglichen Feiertage in meinem Excel-Kalender. Dort stehen neben dem Datum die Tagesbezeichnung und im Falle eines Feiertages in einer dritten Spalte sein Name. Zur besseren ▄bersicht wⁿrde ich gerne die Wochenenden und die Zeilen mit den Feiertagen durch unterschiedliche Farben hervorheben. Geht das auch mit Hilfe eines Makros?

Manuell stellt das ─ndern von Farben kein Problem dar: Sie durchsuchen die Tage. Wenn Sie einen Feiertag finden, markieren Sie die Zeile und fΣrben sie rot. Falls es sich um einen Samstag handelt, fΣrben Sie sie beispielsweise grau. Sobald Sie die FΣrbung jedoch automatisch durchfⁿhren wollen, mu▀ auch der Vergleich mit der Tagesbezeichnung automatisch erfolgen. Sie ben÷tigen also ein Makro, das alle Zeilen (Tage) durchlΣuft und in AbhΣngigkeit von der Tagesbezeichnung entsprechend fΣrbt. Dazu kommt der Test auf einen Feiertag. Sie k÷nnten einmal das Makro fⁿr die Wochenenden starten und anschlie▀end ein anderes Makro, das nach Feiertagen sucht. Es lΣ▀t sich aber auch integrieren. Das Makro im Kasten auf dieser Seite erledigt die von Ihnen gewⁿnschte Funktion. Die mit Hochkommas eingeleiteten Befehle brauchen Sie ⁿbrigens nicht abzutippen. Das Makro sieht kompliziert aus, ist es aber nicht. Es besteht aus vier Bausteinen: Der erste initialisiert die Variablen. Die erste Zeile ermittelt die zu ⁿberprⁿfende Spalte aus der Cursor-Position. Somit funktioniert das Makro unabhΣngig von der Gestalt des Kalenders. Sie mⁿssen es nur auf die Spalte mit den Daten setzen. Falls Sie diese FlexibilitΣt nicht ben÷tigen, k÷nnen Sie SelCol durch eine Konstante ersetzen. Die nΣchste Anweisung setzt den ZeilenzΣhler i auf 1. Falls bei Ihnen der 1. Januar nicht in der zweiten Zeile, sondern in der fⁿnften liegt, initialisieren Sie i mit dem Wert 4. Zuletzt setzen Sie die Abbruchbedingung Break- OFF auf den richtigen Ausgangswert. Der zweite Baustein besteht aus einer WHILE-Schleife. Das Makro beginnt mit der ▄berprⁿfung am 1.1. und mu▀ so lange eine weitere Zeile ⁿberprⁿfen, bis es den 31.12. erreicht. Der dritte Teil ist die Prⁿfbedingung. Sie hat aufgrund der StΣrke des Feiertags, der auch an einem Wochenende liegen kann, folgende Struktur:

WENN Feiertag DANN Rot╢
SONST WENN Samstag DANN Hellgrau╢
SONST WENN Sonntag DANN 
Dunkelgrau╢
ZunΣchst prⁿft das Makro die in diesem Fall rechts (SelCol +1) von der Datumsspalte stehenden EintrΣge. Falls es einen Eintrag findet, handelt es sich um einen Feiertag, und es fΣrbt die Zeile mit Hilfe des vierten Bausteins rot. Wenn das nicht der Fall ist, ⁿberprⁿft das Makro zunΣchst auf einen Samstag, dann auf einen Sonntag. Tritt keiner dieser FΣlle ein, passiert nichts, und die nΣchste Zeile avanciert zum Prⁿfobjekt. Die Informationen ⁿber die Tage holt das Makro aus der linken Nachbarspalte der Spalte mit den Daten (SelCol - 1). Durch Variation der Konstanten 1 und des Operators lassen sich auch beliebige andere Spalten der gleichen Zeile ansprechen. Falls eine Zeile zu fΣrben ist, tritt der vierte Baustein in Aktion. Das ROWS-Auflistungsobjekt erlaubt durch An- gabe eines Index als Parameter den Zugriff auf eine Zeile des aktiven Arbeitsblattes. Der ZΣhler i identifiziert die gerade bearbeitete Zeile. Um die farbliche Anpassung vorzunehmen, verΣndern Sie ⁿber das ROWS-Auflistungsobjekt die entsprechenden Eigenschaften der aktiven Zeile. Um gleich mehrere Eigenschaften zu verΣndern, benutzen Sie das WITHùKonstrukt. Das Makro finden Sie ⁿbrigens als TXT-Datei auf der aktuellen WIN-Monats-CD sowie in den WIN-Online-Foren.
Listing  äFeiertage einfΣrbenô
Sub LineMarker ()╢
 æWerte initialisieren  (Baustein 1)╢
SelCol = ActiveCell.Column╢
i = 1╢
BreakOff = False╢
 æHier beginnt die Schleife  (Baustein 2)╢
While Not BreakOff╢
i = i + 1╢
ActiveSheet.Cells (i, SelCol).Activate╢
 æWenn noch nicht Ende des Jahres, dann ...╢
If Not ActiveCell.Value = ô31.12.98ô Then╢
 æPrⁿfroutine  [IF..THEN..ELSEIF..ELSEIF..ENDIF]  (Baustein 3)╢
If ActiveSheet.Cells (i,SelCol+1).Value<>ô ô Then╢
 æFΣrben  (Baustein 4)╢
Rows (i).Select ╢
With Selection.Interior╢
.ColorIndex = 3╢
.Pattern = xlSolid╢
End With╢
ElseIf ActiveSheet.Cells (i,SelCol-1).Value=ôSamstagô Then╢
Rows (i).Select╢
With Selection.Interior╢
.ColorIndex = 15╢
.Pattern = xlSolid╢
End With╢
ElseIf ActiveSheet.Cells (i,SelCol-1).Value=ôSonntagô Then╢
Rows (i).Select
With Selection.Interior╢
.ColorIndex = 48╢
.Pattern = xlSolid╢
End With╢
End If╢
Else╢
 æWenn doch Ende des Jahres, dann dieser Teil  (Baustein 4)╢
BreakOff = True╢
End If╢
Wend╢
End Sub╢