Offizielle Farbnamen in VBA (Microsoft Excel)
Excel verwendet eine Farbpalette mit 56 Farben. Sie können diese Farben sehen, wenn Sie die Registerkarte Muster im Dialogfeld Zellen formatieren anzeigen.
Wenn Sie Makros in VBA erstellen, möchten Sie möglicherweise anhand von Konstanten namentlich auf diese Farben verweisen.
Leider sind in der VBA von Excel nicht für jede der 56 Farben in der Palette Konstanten definiert. Die einzigen Farben, die namentlich definiert werden, sind Mitglieder der ColorConstants-Klasse, und es gibt acht Mitglieder der Klasse: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta und vbCyan.
In VBA können Sie mit der ColorIndex-Eigenschaft definieren, welche Farbe Sie in der Excel-Palette verwenden möchten. Das Problem ist, dass ColorIndex keine Farbe ist. Es ist ein Index in der Palette. Somit ist ein ColorIndex von 1 die erste Farbe in der Palette, 2 die zweite und so weiter. Sie können dies in Aktion sehen, indem Sie sich den Beispielcode unter dieser URL ansehen:
http://www.ozgrid.com/VBA/ReturnCellColor.htm
Dieser Code untersucht die ColorIndex-Eigenschaft für eine Zelle und gibt einen Farbnamen zurück. Der zurückgegebene Name ist jedoch keine Konstante für die Farbe. Es ist nur eine Beschreibung der Farbe, die die Palette an diesem Index zu haben scheint.
Wenn Sie die Farbe einer Zelle festlegen möchten, sollten Sie die Color-Eigenschaft verwenden. Mit dieser Eigenschaft können Sie die acht zuvor erwähnten VBA-Farbkonstanten verwenden. Wenn Sie diese Farbeigenschaft verwenden, um die Innenfarbe einer Zelle festzulegen, werden Sie feststellen, dass die acht benannten Farben den ColorIndex-Werten von 1 bis 8 entsprechen. Das folgende Makro veranschaulicht dies sehr gut:
Sub CheckColors() Dim arr8Colors As Variant Dim i As Integer arr8Colors = Array( _ vbBlack, vbWhite, vbRed, vbGreen, _ vbBlue, vbYellow, vbMagenta, vbCyan) For i = 0 To 7 Selection.Offset(i, 0).Interior.Color = arr8Colors(i) Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex Next i End Sub
Diese Entsprechung für die ersten acht Werte zwischen Color und ColorIndex sollte nur als ein Artefakt der Geschichte betrachtet werden, das auf die Tage zurückgeht, als Excel nur die Verwendung von acht Farben erlaubte – die acht Farben, die mit VBA-Konstanten definiert wurden. Wenn Sie eine andere Farbe für eine Zelle angeben möchten, sollten Sie die RGB-Funktion verwenden, um die Color-Eigenschaft anzugeben, wie hier gezeigt:
Selection.Interior.Color = RGB(128, 64, 255)
Mit der RGB-Funktion können Sie die roten, grünen und blauen Komponenten einer beliebigen Farbe angeben. Jede Komponente kann einen Wert zwischen 0 und 255 haben.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2778) gilt für Microsoft Excel 97, 2000, 2002 und 2003.