Bedingte Formatierung mit VBA-Modul
19.01.2009 18:03:57
Fuhrer
Ich will mit einem VBA-Modul einen bestimmten Bereich nach definierten Kriterien einfärben.
Das Modul wird später einem Comnand-Button Zugeordent (dies ist für mich kein Problem).
Nun konnte ich im Internet ein entprechendes Makro finden. Jedoch ist dieses Makro nur für eine Spalte
vorgesehen (Siehe Beispiel unten). Ich konnte dieses Makro zwar auf eine weitere Spalte erweitern, doch scheint mir diese Variante als sehr umständlich, da ich dieses Makro voraussichtlich für 130 Spalten benötige. Der Makro-Code würde dadaurch auch viel zu lang und unüberschaubar werden.
Ich wäre sehr dankbar, wenn mir jemand den Code für mein Vorhabe entsprechend anpassen oder wenigstens ein Tip geben könnte.
Sub BedingteFormatierung()
Dim Z1, Z2, Z3, Z4, Z5 As Integer
Dim F1, F2, F3, F4, F5 As String
Z1 = 50 'grün
F1 = 4
Z2 = 40 'gelb
F2 = 6
Z3 = 25 'rot
F3 = 3
Z4 = 15 'blau
F4 = 5
Z5 = 0 'grau
F5 = 15
Columns("A:B").Select 'Alte Farben entf.
Selection.Interior.ColorIndex = xlNone
'Spalte A
[A2].Select 'Neue Markierungen setzen
Do Until IsEmpty(ActiveCell.Value)
If ActiveCell.Value = Z1 Then
ActiveCell.Interior.ColorIndex = F1
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z2 Then
ActiveCell.Interior.ColorIndex = F2
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z3 Then
ActiveCell.Interior.ColorIndex = F3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z4 Then
ActiveCell.Interior.ColorIndex = F4
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z5 Then
ActiveCell.Interior.ColorIndex = F5
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
'Spalte B
[B2].Select 'Neue Markierungen setzen
Do Until IsEmpty(ActiveCell.Value)
If ActiveCell.Value = Z1 Then
ActiveCell.Interior.ColorIndex = F1
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z2 Then
ActiveCell.Interior.ColorIndex = F2
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z3 Then
ActiveCell.Interior.ColorIndex = F3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z4 Then
ActiveCell.Interior.ColorIndex = F4
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell.Value = Z5 Then
ActiveCell.Interior.ColorIndex = F5
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
'Spalte C usw.
[A1].Select
End Sub
Vielen Dank für eure Hilfe
Gruss
Stefan Fuhrer