Autor: Uwe Küstner --- Aus Excel VBA - Gruppe:
Häufige FragenFarbpalette - Colorindex
Autor: Uwe Küstner - Erstellt: -- - Letzte Revision: --
ColorIndex - welche Nummer für
welche Farbe?
Oft
wird die Frage gestellt, wie man Zellen oder
Schrift per VBA eine bestimmte Farbe zuweisen kann.
Excel verwaltet die Farben
pro Arbeitsmappe in einer Palette mit 56 Farben, welche in VBA mit dem
ColorIndex angesprochen werden. Nun ist es ja wichtig zu
wissen, welche Nummer welcher Farbe der Standardpalette zugeordnet ist.
Dazu
soll folgendes Makro dienen. Es erstellt eine neue Mappe mit einer Übersicht der
Farbcodezuordnung.
Option Explicit
Sub FarbnummernUebersicht()
' Erstellt in einer neuen Arbeitsmappe eine Übersicht der
' Farbnummern (ColorIndex) der Standard-Farbpalette.
' Uwe Küstner
Dim iColor As Byte
Dim iX As Byte
Dim iY As Byte
Application.ScreenUpdating = False
Workbooks.Add xlWBATWorksheet
ActiveSheet.Name = "ColorIndex"
For iY = 2 To 22 Step 3
For iX = 2 To 25 Step 3
iColor = iColor + 1
Range(Cells(iY, iX), Cells(iY + 2, iX + 2)).Interior.ColorIndex = iColor
With Cells(iY + 1, iX + 1)
.Interior.ColorIndex = 15
.Value = iColor
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Next iX
Next iY
Columns(3).AutoFit
Cells.ColumnWidth = Columns(3).ColumnWidth
Cells.RowHeight = Columns.ColumnWidth * 6.66
Application.ScreenUpdating = True
End Sub
Zum
Ermitteln der Indexnummern in farbig formatierten Zellen kann folgendes Makro verwendet
werden.
Einfach die Zellen markieren (aber nicht zu viele, sonst
wird die Ausgabebox zu lang) und das Makro aufrufen. Es werden die Codes für
Schrift und Zellhintergrund separat gelistet. Zellen, die keine Farbformatierung
enthalten, werden nicht mit aufgeführt.
' **************************************************************
' Modul: Modul1 Typ = Allgemeines Modul
' **************************************************************
Option Explicit
Sub FarbnummernAnzeigen()
' Zeigt in einer MsgBox die Farbcodes
' der Schrift- und Hintergrundfarben
' der markierten Zellen an
' Uwe Küstner
Dim sAusgabe As String
Dim rngArea As Range
Dim rngBereich As Range
Dim rngZelle As Range
Dim iHintergrund As Byte
Dim iSchrift As Byte
Set rngBereich = Selection
For Each rngArea In rngBereich
For Each rngZelle In rngArea
iSchrift = IIf(rngZelle.Font.ColorIndex < 1, 0, _
rngZelle.Font.ColorIndex)
iHintergrund = IIf(rngZelle.Interior.ColorIndex < 1, 0, _
rngZelle.Interior.ColorIndex)
If iSchrift + iHintergrund > 0 Then
sAusgabe = sAusgabe & vbLf & rngZelle.Address(0, 0) _
& vbTab & iSchrift & vbTab & iHintergrund
End If
Next rngZelle
Next rngArea
If Len(sAusgabe) > 0 Then
sAusgabe = "Zelle" & vbTab & "Schrift" & vbTab & "Hintergrund" & vbLf & _
"Address" & vbTab & "Font" & vbTab & "Interior" & sAusgabe
Else
sAusgabe = "In den markierten Zellen sind keine Farben" & vbLf & _
"für Schrift oder Hintergrund eingestellt."
End If
MsgBox sAusgabe, Title:="Eingestellte Farbcodes:"
End Sub
Weitere Artikel der Gruppe: Häufige Fragen Aus Excel VBA
Nach oben