PDA

Vollständige Version anzeigen : Wert in Zeile, Farbe ändern


salpeterer
23.09.2016, 10:26
Hallo

Vielleicht kann jemand einem Anfänger helfen :)

Habe eine Userform aus der ich Zeilen fülle.

je nach Wert der Spalte D (zahlen von 1 bis 100) soll sich die Farbe der Spalte A ändern.

Es funktioniert auch fast - leider erst beim ändern der Zeile, beim erstmaligen füllen der Zeile wird die Farbe noch nicht geändert wie ich sie gerne hätte.

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Select Case Target.Column
Case 2 'Spalte B
Select Case Target.Row
Case 4 To 500 'Zeile 4 bis 500
For i = Target.Row To Target.Row + Target.Rows.Count - 1
If IsEmpty(Cells(i, Target.Column)) = False Then 'Wenn die Zelle nicht leer ist (falsch), dann
Range("$A$" & CStr(i)).Interior.Color = vbBlue 'Zellfarbe Blau
Range("$A$" & CStr(i)).Font.Color = vbWhite 'Schriftfarbe Weis
Range("$A$" & CStr(i)).Borders.Color = vbWhite 'Rahmenfarbe Weis
End If

If (Cells(i, 4)) >= "21" And (Cells(i, 4)) <= "22" Then
Range("$A$" & CStr(i)).Interior.Color = RGB(255, 236, 139)
Range("$A$" & CStr(i)).Font.Color = vbWhite
Range("$A$" & CStr(i)).Borders.Color = vbWhite
End If

If (Cells(i, 4)) >= "22" And (Cells(i, 4)) <= "23" Then
Range("$A$" & CStr(i)).Interior.Color = RGB(255, 222, 173)
Range("$A$" & CStr(i)).Font.Color = vbWhite
Range("$A$" & CStr(i)).Borders.Color = vbWhite
End If

If (Cells(i, 4)) >= "23" And (Cells(i, 4)) <= "24" Then
Range("$A$" & CStr(i)).Interior.Color = RGB(255, 187, 255)
Range("$A$" & CStr(i)).Font.Color = vbWhite
Range("$A$" & CStr(i)).Borders.Color = vbWhite
End If

If (Cells(i, 4)) >= "3" And (Cells(i, 4)) <= "4" Then
Range("$A$" & CStr(i)).Interior.Color = RGB(151, 255, 255)
Range("$A$" & CStr(i)).Font.Color = vbWhite
Range("$A$" & CStr(i)).Borders.Color = vbWhite
End If


If IsEmpty(Cells(i, Target.Column)) = True Then 'Wenn die Zelle leer ist (wahr), dann
Range("$A$" & CStr(i)).Interior.ColorIndex = xlNone 'Zellfarbe - Keine Farbe
Range("$A$" & CStr(i)).Font.ColorIndex = xlAutomatic 'Schriftfarbe - keine Farbe
Range("$A$" & CStr(i)).Borders.ColorIndex = xlNone 'Rahmenfarbe - keine Farbe
End If
Next
End Select
End Select
Application.EnableEvents = True
End Sub

Hajo_Zi
23.09.2016, 10:28
warum VBA und nicht bedingte Formatierung?
Das Ereignis ist das für Ändern einer Zelle.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

rastrans
23.09.2016, 10:29
Und wenn du es mal mit einer Bedingten Formatierung versuchst? Dann klappt das auch gleich beim ersten Wert!

salpeterer
23.09.2016, 10:45
Habe auch an die Bedingte Formatierung gedacht - aber dadurch das Zeilen immer wieder gelöscht werden und neue hinzugefügt werden, habe ich gedacht ich probiere es mal mit VBA