Zellen einfärben mit VBA
24.02.2011 17:41:17
Erich
Hi Bernd,
hier erst mal eine kleine Prozedur, die deine Zellen einfärbt:
Option Explicit
Sub Einfaerb()
Dim rngB As Range, rngC As Range, arrCol
arrCol = Array(0, 5, 10, 6, 1, 36) ' Farbnummern anpassen
' Wirkungsbetreich
Set rngB = Range("F5:T5,F10:T10,F15:T15,F20:T20,F25:T25" & _
",F30:T30,F35:T35,F40:T40,F45:T45,F50:T50,F55:T55")
For Each rngC In rngB
If IsNumeric(rngC) Then
If rngC = Int(rngC) And rngC >= 1 And rngC arrCol(rngC) Then _
rngC.Font.ColorIndex = arrCol(rngC)
' ' Füllfarbe
If rngC.Interior.ColorIndex arrCol(rngC) Then _
rngC.Interior.ColorIndex = arrCol(rngC)
End If
End If
Next rngC
End Sub
Die Farbnummern musst du vermutlich anpassen. Sie können von Mappe zu Mappe variieren.
Ein Problem sehe ich hier noch in "das sich die Zell- und Schriftfarben automatisch ändern".
Die Automatik lässt sich (in XL2003 und früher) ja nicht per bedingter Formatierung herstellen.
In VBA wäre es einfach, auf Eingaben in den Wirkungsbereich zu reagieren - mit einer Ereignisprozedur (Worksheet_Change).
Aber du hast Formeln (mit SVERWEIS) in den Zellen stehen. Der Wert einer Zelle kann sich aus vielerlei Gründen ändern,
etwa bei Erreichen einer bestimmten Uhrzeit oder durch die Änderung einer Zelle in einer anderen Arbeitsmappe.
Gibt es gut beschreibbare Bereiche, in denen die Eingaben stattfinden, die die Formelwerte im Wirkungsbereich
ändern? Dann könnte man vielleicht ein "Worksheet_Change" für diese Bereiche einrichten.
Oder würde es ausreichen, die (Um-)Färbungen per Klick auf einen Button auszulösen?
Oder muss es wirklich automatisch gehen?
Dann könnte man Einfaerb() immer starten, wenn in dem Tabellenblatt neu berechnet wird - dabei würde das
Calculate-Ereignis benutzt. Da das oft passieren kann, kann das in der Mappe als Bremse wirken.
Noch eine Frage ganz zum Schluss: Schrift- und Füllfarbe sollen gleich sein? Also Negerkampf im Tunnel?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort