Autor: Uwe Küstner  --- Aus Excel VBA - Gruppe: Häufige Fragen

Farbpalette - 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