Supportnet / Forum / Tabellenkalkulation
Zellen formatieren
Frage
Hallo, ich möchte einer Zelle eine von 6 Farben zuordnen, wenn die Zelle einen von 6 Namen enthält. Mit bedingter Formatierung sind leider nur 3 möglich.
Gibt es eine andere Möglichkeit, evtl. mit VBA oder direkt die Farbe in einer Formel angeben?
Antwort 1 von Saarbauer
Hallo,
ist aus meiner Sicht nur mit einem Makro zu lösen.
Da der Aufabeu der Tabelle nicht bekannt, nur dieser Hinweis.
Gruß
Helmut
ist aus meiner Sicht nur mit einem Makro zu lösen.
Da der Aufabeu der Tabelle nicht bekannt, nur dieser Hinweis.
Gruß
Helmut
Antwort 2 von cmkatz
Hallo,
Hier ein Versuch in der Zelle A1:
Einbau in dein Excel-Sheet:
- Alt+F11 öffnet den VBA-Editor
- Doppelklick auf "Tabelle1(Tabelle1)"
- obigen Code dort rechts einfügen
Hoffe, geholfen zu haben :-)
Gruß
cmkatz
Hier ein Versuch in der Zelle A1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Inhalt As String
Inhalt = Range("A1").Value
Select Case Inhalt
Case "Hans"
Range("A1").Interior.Color = vbRed
Range("A1").Font.Color = vbBlack
Case "Peter"
Range("A1").Interior.Color = vbBlue
Range("A1").Font.Color = vbWhite
Case "Xaver"
Range("A1").Interior.Color = vbCyan
Range("A1").Font.Color = vbBlack
Case "Fritz"
Range("A1").Interior.Color = vbYellow
Range("A1").Font.Color = vbBlack
Case "Max"
Range("A1").Interior.Color = vbGreen
Range("A1").Font.Color = vbBlack
Case "Moritz"
Range("A1").Interior.Color = vbBlack
Range("A1").Font.Color = vbWhite
Case Else
Cells(1, 1).Interior.ColorIndex = None
Range("A1").Font.Color = Automatic
End Select
End Sub
Einbau in dein Excel-Sheet:
- Alt+F11 öffnet den VBA-Editor
- Doppelklick auf "Tabelle1(Tabelle1)"
- obigen Code dort rechts einfügen
Hoffe, geholfen zu haben :-)
Gruß
cmkatz
Antwort 3 von Pico
Hallo cmkatz,
dein Tipp habe ich umgesetzt, klappt auch bei mir.
Leider hatte ich vergessen zu sagen, dass die Namen in einer Spalte (A1:A31) und nicht nur in einer Zelle vorkommen können. Das habe ich so (A1:A31) probiert, dann kommt aber Laufzeitfehler.
Gibt es da noch eine Lösung?
Gruß Pico
dein Tipp habe ich umgesetzt, klappt auch bei mir.
Leider hatte ich vergessen zu sagen, dass die Namen in einer Spalte (A1:A31) und nicht nur in einer Zelle vorkommen können. Das habe ich so (A1:A31) probiert, dann kommt aber Laufzeitfehler.
Gibt es da noch eine Lösung?
Gruß Pico
Antwort 4 von JoeKe
Hallo Pico,
ändere cmkatz Code so ab:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Inhalt As String, i As Integer
For i = 1 To 31
Inhalt = Range("A" & i)
Select Case Inhalt
Case "Hans"
Range("A" & i).Interior.Color = vbRed
Range("A" & i).Font.Color = vbBlack
Case "Peter"
Range("A" & i).Interior.Color = vbBlue
Range("A" & i).Font.Color = vbWhite
Case "Xaver"
Range("A" & i).Interior.Color = vbCyan
Range("A" & i).Font.Color = vbBlack
Case "Fritz"
Range("A" & i).Interior.Color = vbYellow
Range("A" & i).Font.Color = vbBlack
Case "Max"
Range("A" & i).Interior.Color = vbGreen
Range("A" & i).Font.Color = vbBlack
Case "Moritz"
Range("A" & i).Interior.Color = vbBlack
Range("A" & i).Font.Color = vbWhite
Case Else
Range("A" & i).Interior.ColorIndex = None
Range("A" & i).Font.Color = Automatic
End Select
Next
End Sub
MfG
JöKe
ändere cmkatz Code so ab:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Inhalt As String, i As Integer
For i = 1 To 31
Inhalt = Range("A" & i)
Select Case Inhalt
Case "Hans"
Range("A" & i).Interior.Color = vbRed
Range("A" & i).Font.Color = vbBlack
Case "Peter"
Range("A" & i).Interior.Color = vbBlue
Range("A" & i).Font.Color = vbWhite
Case "Xaver"
Range("A" & i).Interior.Color = vbCyan
Range("A" & i).Font.Color = vbBlack
Case "Fritz"
Range("A" & i).Interior.Color = vbYellow
Range("A" & i).Font.Color = vbBlack
Case "Max"
Range("A" & i).Interior.Color = vbGreen
Range("A" & i).Font.Color = vbBlack
Case "Moritz"
Range("A" & i).Interior.Color = vbBlack
Range("A" & i).Font.Color = vbWhite
Case Else
Range("A" & i).Interior.ColorIndex = None
Range("A" & i).Font.Color = Automatic
End Select
Next
End Sub
MfG
JöKe
Antwort 5 von Pico
Danke für die Antworten, ist genau das, was ich haben wollte.
Bis bald Pico
Bis bald Pico
Antwort 6 von HoBra
Hallo,
so ist etwas universeller - Du must nicht auf die Zelle achten. Die Farben findest du in der EXCEL-Hilfe unter "Colorindex"
´HoBra: Färbt die Zellen je nach Wert automatisch ein
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error Resume Next
Select Case Target.Value
Case ""
Target.Interior.ColorIndex = xlNone
Target.Font.ColorIndex = 0
Case Is = "Fritz"
Target.Interior.ColorIndex = 44
Case Is = "Peter"
Target.Interior.ColorIndex = 23
Target.Font.ColorIndex = 2
Case Is = "Hans"
Target.Interior.ColorIndex = 56
Target.Font.ColorIndex = 2
Case Is = "Uwe"
Target.Interior.ColorIndex = 6
Case Is = "Karl"
Target.Interior.ColorIndex = 4
Target.Font.ColorIndex = 1
Case "Eva"
Target.Interior.ColorIndex = 5
Target.Font.ColorIndex = 15
Case Else
Target.Interior.ColorIndex = xlColorIndexAutomatic
Target.Font.ColorIndex = xlColorIndexAutomatic
End Select
End Sub
so ist etwas universeller - Du must nicht auf die Zelle achten. Die Farben findest du in der EXCEL-Hilfe unter "Colorindex"
´HoBra: Färbt die Zellen je nach Wert automatisch ein
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
On Error Resume Next
Select Case Target.Value
Case ""
Target.Interior.ColorIndex = xlNone
Target.Font.ColorIndex = 0
Case Is = "Fritz"
Target.Interior.ColorIndex = 44
Case Is = "Peter"
Target.Interior.ColorIndex = 23
Target.Font.ColorIndex = 2
Case Is = "Hans"
Target.Interior.ColorIndex = 56
Target.Font.ColorIndex = 2
Case Is = "Uwe"
Target.Interior.ColorIndex = 6
Case Is = "Karl"
Target.Interior.ColorIndex = 4
Target.Font.ColorIndex = 1
Case "Eva"
Target.Interior.ColorIndex = 5
Target.Font.ColorIndex = 15
Case Else
Target.Interior.ColorIndex = xlColorIndexAutomatic
Target.Font.ColorIndex = xlColorIndexAutomatic
End Select
End Sub

