Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1128to1132
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Change Zellfarbe in zellen der Reihe nachaufheben

Change Zellfarbe in zellen der Reihe nachaufheben
lisa

Hallo
Ich habe in meiner Tabelle eine Prüfung, die wenn Zellen nicht gefüllt sind die Zellen rot färbt.
Mit dem Changereignis hebe ich die Rotfärbung wieder auf!
Nachteil bei meinem Code ist, das wenn ich eine dieser genannten Zellen activiere, geben alle Zellen ihre Farbe auf. Scön wäre hier aber, das die Zellen der Reihe nach mit aktivierung die Farbe wieder aufheben.
Wer kann mir hierbei helfen.
Anbei mein bisheriger Code!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("B3,B6") = "" Then
Range("B3,B6").Interior.ColorIndex = xlNone
End If
End Sub
Kann mir hierbei jemand weiter helfen?
Gruß Lisa

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Change Zellfarbe in zellen der Reihe nachaufheben
21.01.2010 15:14:44
Michael
Warum benutzt Du nicht "Bedingte Formatierung" dafür?
Um Zellen in einem Bereich zu färben ist das ideal und schnell gemacht.
AW: Change Zellfarbe in zellen der Reihe nachaufheben
21.01.2010 15:19:18
lisa
Hallo
Da gibt es verschiedentliche Gründe für!
Ich habe mich hierfür entschieden und würde dieses im VBA auch gern belassen.
Trotzdem Danke für den Tip!
Wenn es also für meinen angegebenen Weg eine Möglichkeit gibt, wäre ich für jede Hilfe sehr dankbar!
Lieben Gruß Lisa
AW: Change Zellfarbe in zellen der Reihe nachaufheben
21.01.2010 15:36:13
Michael
Hi
So z.B
Weil: "B3,B6" ist kein Bereich sondern nur B3 + B6
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("B3") = "" Then
Range("B3").Interior.ColorIndex = xlNone
Else: Range("B3").Interior.ColorIndex = 3
If Range("B6") = "" Then
Range("B6").Interior.ColorIndex = xlNone
Else: Range("B6").Interior.ColorIndex = 3
End If
End If
End Sub
Gruß
Michael
Anzeige
verstehe nicht ganz...
21.01.2010 15:30:58
Björn
Hallo,
...warum Du das so umständlich machen möchtest....
Nun gut. Erster Tipp, nimm die bedingte Formatierung.
Zweiter Tipp, bzw. Frage, warum nimmst du Selection-Change und nicht worksheet_Change?
Der Code wird jedes Mal ausgeführt, wenn du die Selektion in der Mappe änderst.
DAs ist völlig unnötig, da sich bei der Selektionsänderung niemals ein Wert ändern kann. Das geht voll auf die Performance.
Tipp 3:
Du kannst mit Range("B3,B6") = "" nicht prüfen, ob in dem Bereich was drinsteht. Hier wird nur die 1. Zelle geprüft, ist Dir das klar?
Diese Prüfung musst du für jede Zelle extra machen.
Das ist wiederum ein Nachteil Deiner Methode, weil das bei mehreren Zellen wieder voll auf die Performance geht.
Das ist dann auch die Lösung, wenn du jede Zelle extra prüfst, dann kannst du sie auch einzeln ansprechen und nur bei dieser z.B. die Farbe ändern.
Gruß
Björn B.
Anzeige
mit Suchen und Ersetzen...
21.01.2010 18:01:30
Tino
Hallo,
hier mal eine andere Version.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngZellen As Range, tmpResetReplace As Range

'hier Deinen Zellbereich anpassen 
Set rngZellen = Intersect(Range("B3:B6"), Target)
    
    If Not rngZellen Is Nothing Then
        'um Ersetzen in ganzer Arbeitsmappe zurückzusetzen 
        Set tmpResetReplace = Cells(Rows.Count, Columns.Count).Find("*")
        With Application
            .ScreenUpdating = False
            .ReplaceFormat.Clear
            .ReplaceFormat.Interior.ColorIndex = xlColorIndexNone
                rngZellen.Cells.Interior.ColorIndex = 3
                rngZellen.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder _
                :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=True
            .ScreenUpdating = True
        End With
    End If
End Sub
Gruß Tino
Anzeige
AW: mit Suchen und Ersetzen...
21.01.2010 18:45:05
Tino
Hallo,
eventuell den Parameter
LookAt:=xlPart
durch diesen ersetzen
LookAt:=xlWhole
ist um den gesamten Inhalt zu Durchsuchen.
Gruß Tino

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige