Digital

Wie Excel beim Formatieren bedingungslos gehorcht

Aktualisiert am 04.11.2008

Excels Funktion «Bedingte Formatierung» kann maximal über drei Bedingungen gesteuert werden. Ein Makro umgeht diese Beschränkung.

Per Makro zur bedingten Formatierung mit mehr als drei Bedingungen.

Per Makro zur bedingten Formatierung mit mehr als drei Bedingungen.

Dieses Makro nehmen Sie wie folgt in Betrieb: Öffnen Sie Excel und wechseln Sie zum Visual Basic Editor. Das geht am schnellsten über die Tastenkombination «Alt» + «F11». Doppelklicken Sie nun links in der Baumliste bei «VBAProject > Microsoft Excel Objekte» auf «Diese Arbeitsmappe». Es erscheint ein Dialogfenster, in dem Sie oben zwei Dropdown-Listen vorfinden. Im ersten setzen Sie die Auswahl auf «Workbook», im zweiten auf «SheetChange». Excel erzeugt nun ein Codegerüst, das Sie für Ihr Makro verwenden. Fügen Sie nun dazwischen den Code für die automatischen Formatierungen ein. Die Ausgangslage sind die beiden folgenden Zeilen:

Select Case Target.Value

End Select

Anstelle der drei Punkte geben Sie nun alle Werte an, die Sie mit einer separaten Farbe markieren wollen. Das tun Sie mit einem «Case»-Statement:

Case 5
   Target.Interior.ColorIndex = 5

Das heisst auf gut deutsch: Zellen mit der Zahl 5 werden mit der Farbe mit dem Index 1 markiert. Fügen Sie für jede Bedingung einen separaten «Case»-Block hinzu.

Sie können nicht nur Zahlen angeben, sondern auch Textinhalte, diese müssen dann aber in Anführungszeichen gesetzt werden:

Case "Ferien"
   Target.Interior.ColorIndex = 8

Soll zur besseren Lesbarkeit die Textfarbe auf weiss gesetzt werden, tun Sei das mit folgender Code-Zeile:

Target.Font.ColorIndex = 2

Bei «ColorIndex» können Sie folgende Codes verwenden:

Schwarz1
Weiss2
Rot3
Hellgrün4
Blau5
Gelb6
Rosa7
Türkis8

Dunkelrot9
Grün10
Dunkelblau   11
Dunkelgelb12
Violett13
Seegrün14
Grau 25%15
Grau 50%16

Sollten diese Farben nicht ausreichen, verwenden Sie statt ColorIndex die Angabe «Color» und übergeben die Farbe als RGB-Wert (mit je einer Zahl für Rot, Grün und Blau):

Case "Rosa"
   Target.Interior.Color = RGB(255, 200, 200)

Das fertige Makro könnte etwa so aussehen:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Target.Value
Case "Ferien"
   Target.Interior.ColorIndex = 5
   Target.Font.ColorIndex = 2
Case "Büro"
   Target.Interior.ColorIndex = 3

Case "Weiterbildung"
   Target.Interior.ColorIndex = 6
Case "Administration"
   Target.Interior.ColorIndex = 14
End Select
End Sub

Bei sehr vielen Farben könnten Sie die Zellfarbe auch anhand des Wertes errechnen und sich so viele separate «Case»-Blöcke sparen. Eine plumpe Methode für Werte zwischen null und 255 wäre diese hier:

Target.Interior.Color = RGB(Target.Value, Target.Value, Target.Value)

Erstellt: 04.11.2008, 20:17 Uhr

Digital

Populär auf Facebook Privatsphäre


Live @ Sunset

11. bis 22. Juli - Zürich Dolder u.a. mit B.B. King, Elton John und Alanis Morissette!

Familie, Beruf und Studium

Sonia Uhlmann ist keine typische Studentin. Dank Fernstudium hat sie den Master trotzdem geschafft.

Online-Kadermarkt

ALPHA.CH: der online-Kadermarkt der Schweiz.

Online-Kadermarkt

ALPHA.CH: der online-Kadermarkt der Schweiz.