Zeilen verschied. Farben zuordnen?

Hallo,

ich möchte in EXCEL Zeilen mit bestimmten Werten in einer Spalte (0-6) jeweils eine Farbe zuweisen. Also Wert 1 dann die ganze Spalte gelb; Wert 2 dann die ganze Zeile rot…

Bedingte Formatierung gibt es nur für 3 Werte.

Danke Jens

Hallo Jens,

wieviele verschiedene Werte hast du denn? Die Farbpalette ist schließlich ziemlich begrenzt.

Unabhängig davon kannst du im Klassenmodul deines Arbeitsblattes folgendes Makro definieren:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long, ab_Zeile As Long, bis_Zeile As Long
ab_Zeile = Target.Row
bis_Zeile = ab_Zeile + Target.Rows.Count - 1
For Zeile = ab_Zeile To bis_Zeile
With Range(Cells(Zeile, 1), Cells(Zeile, 6))
Select Case Cells(Zeile, 1)
Case 2
.Interior.ColorIndex = 7
Case 3
.Interior.ColorIndex = 5
End Select
End With
Next Zeile
End Sub

Ich bin in diesem Makro davon ausgegangen, dass dein gesuchter Wert in Spalte 1 steht und du dann die Spalten 1 bis 6 mit Farbe deklarieren möchtest.

Die Select-Klausel mußt du natürlich um die zu prüfenden Werte erweitern bzw. ändern.

lg Maria

Hallo Jens,

Servus!

wieviele verschiedene Werte hast du denn?

Kann ich jetzt noch nicht genau sagen, es handelt sich um Stufen in einer Produktstruktur ausgeleitet aus einem PDM-System und ich möchte den einzelnen Stufen, zur leichteren Unterscheidung, eine Farbe zuordnen.

In der ersten Spalte steht die Stufe 0 bis sagen wir mal 6 dürfte ausreichen.

  • 0 |Oberstufe
  • 1 |1.Unterstufe zu Stufe 0 (Oberstufe)
  • 2 |1.Unterstufe zu der vorhergehenden Stufe 1 (1.Unterstufe)
  • 2 |2.Unterstufe zu der vorhergehenden Stufe 1(1.Unterstufe)
  • 3 |1.Unterstufe zu der vorhergehenden Stufe 2(2.Unterstufe der 1.Unterstufe)
  • 1 |2.Unterstufe zu der vorhergehenden Stufe 0 (Oberstufe)
  • 2 1.Unterstufe zu der vorhergehenden Stufe 1 (2.Unterstufe der Stufe 0)

um da bei 200 Zeilen einigermaßen übersicht zu schaffen, will ich den Stufen eine Farbe zuordnen, die für die gesamte, jeweilige Zeile verwendet wird.

Die Farbpalette ist

schließlich ziemlich begrenzt.

Unabhängig davon kannst du im Klassenmodul deines
Arbeitsblattes folgendes Makro definieren:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile As Long, ab_Zeile As Long, bis_Zeile As Long
ab_Zeile = Target.Row
bis_Zeile = ab_Zeile + Target.Rows.Count - 1
For Zeile = ab_Zeile To bis_Zeile
With Range(Cells(Zeile, 1), Cells(Zeile, 6))
Select Case Cells(Zeile, 1)
Case 2
.Interior.ColorIndex = 7
Case 3
.Interior.ColorIndex = 5
End Select
End With
Next Zeile
End Sub

Ich bin in diesem Makro davon ausgegangen, dass dein gesuchter
Wert in Spalte 1 steht und du dann die Spalten 1 bis 6 mit
Farbe deklarieren möchtest.

Den Spalten möchte ich keine Farbe zuordnen.

Der ganzen Zeile vielmehr eine Farbe, die für den Wert in der ersten Spalte dieser Zeile steht.

Meine letzten Programmierungen in Basic sind schon ca.10Jahre her, blick da also bei der Sache hier eh nicht durch, ohne mich mehrere Tage intensiv damit beschäftigen zu müssen. (Momentan Diplomarbeit=akuter Zeitmangel)
Gibt es irgendwo im Net oder so, ne Beschreibeung der Befehle? Würde mir beim Durchblicken glaube helfen.

Die Select-Klausel mußt du natürlich um die zu prüfenden Werte
erweitern bzw. ändern.

lg Maria

Dank dir!

Jens

Hallo Jens,

Servus!

wieviele verschiedene Werte hast du denn?

Kann ich jetzt noch nicht genau sagen, es handelt sich um
Stufen in einer Produktstruktur ausgeleitet aus einem
PDM-System und ich möchte den einzelnen Stufen, zur leichteren
Unterscheidung, eine Farbe zuordnen.

In der ersten Spalte steht die Stufe 0 bis sagen wir mal 6
dürfte ausreichen.

Damit kommst du in der Farbpalette auf jeden Fall durch - bei meiner Excel-Version haben die Farben eine durchgehende Numerierung von 1 bis 56. Du mußt eben nur ausprobieren, welche Farben für dich geeignet sind.

Unabhängig davon kannst du im Klassenmodul deines
Arbeitsblattes folgendes Makro definieren:

Private Sub Worksheet_Change(ByVal Target As Range)

Target kann eine Zelle oder ein ganzer Zellbereich sein (wird durch den Datentyp Range definiert). Diesen Parameter erhält das Makro automatisch von Excel, wenn du im Arbeitsblatt eine oder mehrere Zellen (z.B. durch Kopieren) veränderst.

Dim Zeile As Long, ab_Zeile As Long, bis_Zeile As Long
ab_Zeile = Target.Row
bis_Zeile = ab_Zeile + Target.Rows.Count - 1
For Zeile = ab_Zeile To bis_Zeile

Mit dieser Schleife werden alle Zeilen, die in Target enthalten sind, bearbeitet.

With Range(Cells(Zeile, 1), Cells(Zeile, 6))

Dieser Range-Befehl gibt an, welche Zellen der Zeile gefärbt werden sollen.

Select Case Cells(Zeile, 1)
Case 2
.Interior.ColorIndex = 7
Case 3
.Interior.ColorIndex = 5

Wenn du noch weitere Stufen hast, dann mußt du die Zeilen mit „Case“ und „.Interior“ duplizieren. Im Case-Befehl steht der Stufenwert und mit der „.Interior“-Anweisung definierst du den Farbwert.

End Select
End With
Next Zeile
End Sub

Ich bin in diesem Makro davon ausgegangen, dass dein gesuchter
Wert in Spalte 1 steht und du dann die Spalten 1 bis 6 mit
Farbe deklarieren möchtest.

Den Spalten möchte ich keine Farbe zuordnen.

Der ganzen Zeile vielmehr eine Farbe, die für den Wert in der
ersten Spalte dieser Zeile steht.

Das tut das obige Programm auch, nur ist es nicht empfehlenswert, die gesamte Zeile zu färbeln, da sonst alle von Excel möglichen Spalten mit ausgedruckt werden (auch die leeren Spalten). Daher habe ich mal als Vorschlag eben nur die Spalten 1 bis 6 genommen. Aber das Programm färbt natürlich nur die einzelne Zeile in den Spalten 1 bis 6 ein.

Meine letzten Programmierungen in Basic sind schon ca.10Jahre
her, blick da also bei der Sache hier eh nicht durch, ohne
mich mehrere Tage intensiv damit beschäftigen zu müssen.
(Momentan Diplomarbeit=akuter Zeitmangel)
Gibt es irgendwo im Net oder so, ne Beschreibeung der Befehle?
Würde mir beim Durchblicken glaube helfen.

Das weiss ich leider nicht - habe aber eine Befehlsbeschreibung gerade ergänzt.

Die Select-Klausel mußt du natürlich um die zu prüfenden Werte
erweitern bzw. ändern.

lg Maria

Dank dir!

Jens

Super tolles Ding:o)
Habs dann mit nen bissel fremder Hilfe auch in die Tabelle einfügen können.
Einfach so nen Klassenmodul aufmachen und reinkopieren ging nicht.
Aber läuft ja jetzt…

Ich denke das geht schon, nur konnte ich dem PC nicht vermitteln, was ich von ihm wollte:o)

Vielen Dank an Dich

Jens