Office-Fragen.de

Normale Version: Zeilenfarbe ändern bei bestimmten Wert in Spalte oder bei Select
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich habe eine Excel Tabelle mit 20000 Zeilen und nutze Spalten A bis H

In den Spaltenüberschriften steht Name, Vorname, Eintrittsdatum, Bemerkungen etc

Spalte E enthält das Eintrittsdatum

Ich möchte per VBA die Hintergrundfarbe einer Zeile in Spalten A bis H von standard (xlNone) in grün ändern, sobald der Zellwert in E größer 0 ist.
Lösche ich den Wert in E soll wieder standard (xlNone) gelten.

Außer ich nutze die Suchfunktion in Excel. Dann sollen alle Zellen -> egal ob standard oder grün auf gelb markiert werden, um die Suchergebnisse bzw. die selektierte Zelle hervorzuheben.

Ich bin absoluter VBA newbie. Ich weiß aber inzwischen, dass eine bedingte Formatierung nicht geändert wird, wenn ich eine Zelle anwähle -> bedingte Formatierung geht der Farbänderung per VBA vor - somit wirkungslos.

Damit bekomme ich z.B. die Zeilen grün, wenn E größer 0 ist:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Column = 5 And .Value > 0 Then
            Rows(.Row).Interior.ColorIndex = 4
        ElseIf .Column = 5 And .Value = 0 Then
            Rows(.Row).Interior.ColorIndex = 2
        Else
            Rows(.Row).Interior.ColorIndex = xlNone
    End If
End With
End Sub

Jetzt fehlt aber noch die Färbung bei der aktiven Zellauswahl durch die Suchtreffer

Folgendes habe ich im Neztz gefunden:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Static Zelle As Range
    If Not Zelle Is Nothing Then
        Cells.Interior.ColorIndex = xlColorIndexNone
    End If
    Target.Interior.ColorIndex = 6 'gelb
    Set Zelle = Target
End Sub

Wie bringe ich beide Bedingungen zusammen, sodass alle Varianten funktionieren

Zeile = xlNone -> bei Auswahl gelb
Zeile = grün -> bei Auswahl gelb

Setze ich in der Tabelle als VBA Code beides ein funzt gelb aber grün bleibt nichts mehr
Nach weiterer Suche im Netz funktioniert erstmal folgender Code

Code:
Option Explicit
Dim AlteFarbe As Integer, MarkierteZelle As String


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    If Target.Count > 1 Then Exit Sub
    If MarkierteZelle = "" Then
        MarkierteZelle = Target.Address
        AlteFarbe = Target.Interior.ColorIndex
        Target.Interior.ColorIndex = 36
    Else
    If Range(MarkierteZelle).Interior.ColorIndex = 36 Then
        Range(MarkierteZelle).Interior.ColorIndex = AlteFarbe
    End If
        AlteFarbe = Target.Interior.ColorIndex
        MarkierteZelle = Target.Address
        Target.Interior.ColorIndex = 36
    End If
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Column = 5 And .Value > 0 Then
            Rows(.Row).Interior.ColorIndex = 50
        ElseIf .Column = 5 And .Value = 0 Then
            Rows(.Row).Interior.ColorIndex = xlNone
        Else
            Rows(.Row).Interior.ColorIndex = AlteFarbe
    End If
End With
End Sub

In der o.g. Reihenfolge behalten die grünen Zellen ihren Hintergrund, sobald eine Zelle verlassen wird.
Die Suchtreffer (auch im grünen Bereich) werden in gelb ausgegeben / hervorgehoben