Excel bietet die Möglichkeit, mit eine Reihe von Farben, die sowohl für die Schrift, als auch für den Zellhintergrund verwendet werden können, in der Tabelle einzelne Bereiche hervorzuheben. Wie so oft im Leben, gilt sicher auch hier der Grundsatz: weniger kann mehr sein.
Die verschieden Farben können in der Tabelle direkt ausgewählt werden, können aber auch über VBA festgelegt werden. Zu diesem Zweck hat jede Farbe eine Nummer. In der ersten Tabelle habe ich die in der Symbolleiste Formate vorhandenen Farben mit ihren zugehörigen Nummern aufgelistet. Zum besseren Verständnis sind die Farben in der gleichen Reihenfolge abgebildet.
| 1 | 53 | 52 | 51 | 49 | 11 | 55 | 56 |
| 9 | 46 | 12 | 10 | 14 | 5 | 47 | 16 |
| 3 | 45 | 43 | 50 | 42 | 41 | 13 | 48 |
| 7 | 44 | 6 | 4 | 8 | 33 | 54 | 15 |
| 38 | 40 | 36 | 35 | 34 | 37 | 39 | 2 |
Die Farben in der nächsten Tabelle können nur über VBA aufgerufen werden. Wie man leicht erkennen kann, kommen einige dieser Farben auch in der oberen Tabelle vor, haben dort aber eine andere Nummer. Den Grund dafür kenne ich nicht.
| 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
Hier ist eine Gegenüberstellung der gleichen Farben mit den unterschiedlichen Nummern:
| Obere Tabelle | 11 | 7 | 6 | 8 | 13 | 9 | 14 | 5 | 54 | 34 |
| Untere Tabelle | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 18 | 20 |
Somit stehen in Excel zwar 56 Standardfarben zur Verfügung, die sich durch die Übereinstimmungen aber auf 46 reduzieren. Allerdings ist auch das nur die "halbe Wahrheit", da es möglich ist, über Extras/Optionen/Farben die Standardfarben zu verändern. Diese Änderungen werden mit der Arbeitsmappe gespeichert.
Eine Beschreibung dazu findet sich hier.
Grundsätzlich ist es möglich, nach den Farbnummern, per VBA Auswertungen in der Tabelle vorzunehmen. Allerdings sind hier einige "Tücken" zu beachten:
Schwarzer Text in den Zellen muß nicht die Farbnummer 1 aufweisen. Wenn die Standardeinstellung für die Textfarbe auf Automatisch gesetzt ist, lautet der Wert - 4105. Der gleiche Wert wird ausgegeben, wenn die Textfarbe aus einer bedingten Formatierung resultiert. Beim Zellhintergrund ist dieser Wert - 4142. Wird über bestimmte Zellbereiche eine Formatierung der Schriftfarbe vorgenommen, wird über den entsprechenden VBA-Befehl auch eine Textfarbe ausgelesen, wenn in den betreffenden Zellen gar kein Text steht. Somit ist es nicht möglich, auf diesem Weg gefüllte Zellen zu ermitteln.
Hier nun drei Quelltexte zum Einfügen bzw. Auslesen von Farbformaten:
Sub Farbe1() ' Färbt die Zellen A1 bis A10 mit ' den Farbenummern 1 bis 10 ' postmaster@klaus-dieter-2000.de For r = 1 To 10 ' Beginn der For To Next Schleife Cells(r, 1).Select ' selektiert die Zellen With Selection.Interior ' Hintergrundformate festlegen .ColorIndex = r ' Hintergrundfarbe festlegen .Pattern = xlSolid ' Hintergrund "vollflächig" färben End With ' Ende der Hintergrundformatierungen Next r ' Ende der For To Next Schleife End Sub ' Ende des Makros |
Sub Farbe2() ' Liest in den Zellen A1 bis A10 die Farnummern aus ' und schreibt sie in die Zellen B1 bis B10 For r = 1 To 10 ' Beginn der For To Next Schleife Cells(r, 2) = Cells(r, 1).Interior.ColorIndex ' Hintergrundfarbe auslesen und schreiben Next r ' Ende der For To Next Schleife End Sub ' Ende des Makros |
Sub farbe3() ' Schreibt in die Zellen A11 bis A20 die Zahlen von 11 bis 20 ' färbt die Zahlen mit den Farbnummern von 11 bis 20 und zentriert ' die Zahlen in den Zellen. Die Zellhintergründe werden rot gefärbt. For r = 11 To 20 ' Beginn der For To Next Schleife Cells(r, 1) = r ' schreibt die Zahlen Cells(r, 1).Select ' selektiert die Zellen With Selection.Font ' Textformate festlegen (Beginn) .Bold = True ' Schriftart fett .ColorIndex = r ' festlegen der Farbnummer Selection.HorizontalAlignment = xlCenter ' Zahl in der Zelle zentrieren Selection.Interior.ColorIndex = 3 ' Zellhintergrund rot färben End With ' Ende der Zellformatierungen Next r ' Ende der For To Next Schleife End Sub ' Ende des Makros |
Im Downloadbereich befindet eine Mustertabelle mit den lauffähigen Makros aus den Beispielen. Die Makros können aber auch direkt von der Seite kopiert werden.