Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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

Code Zellen einfärben umgehen

Code Zellen einfärben umgehen
10.08.2023 13:29:57
Martina
Hallo,
ich hätte eine ganz kurze Frage zum Einfärben von Zellen.
Einen Code zum Einfärben von Zellen, wenn bestimmte Zeichen/Werte in einem Tabellenblatt auftauchen habe ich schon; diese werden bei "Change" eingefärbt.
Nun die Frage: derzeit habe ich im Case Else stehen, dass die Zelle, wenn die Werte aus dem Case nicht enthalten sind, den Farbindex = xlColorIndexNone bekommen. Dabei werden leider zuvor hinterlegte Felder auch auch farblos umgefärbt.
Wie kann ich das Umgehen? Ich hätte gerne für den Case Else einen Code, dass die ursprüngliche Formatierung bzw. Zellfärbung beibehalten wird.
Unterbei der aktuell verwendete Code.
Danke vorab!


Dim Zelle As Range, Bereich As Range

For Each Zelle In Target
Select Case Zelle.Value
Case "a", "b", "c"
Zelle.Interior.Color = RGB(238, 149, 114)

Case Else
Zelle.Interior.ColorIndex = xlColorIndexNone
End Select
Next Zelle

End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code Zellen einfärben umgehen
10.08.2023 13:40:29
onur
Wozu überhaupt "Case Else"?
Wenn, dann einfärben - Schluss aus (wenn nicht dann nicht).
Code Zellen einfärben umgehen
10.08.2023 14:22:12
Martina
Danke, Problem gelöst!!!! Super!
Gerne !
10.08.2023 15:33:29
onur
Code Zellen einfärben umgehen
10.08.2023 14:51:07
Martina
Funktioniert leider nicht, aber danke. Färbt sich zwar beim 1. richtig um und belässt Zellen, welche sich nicht umfärben sollten mit der ursprünglichen Farbe. Überschreibe ich jedoch eine eingefärbte Zelle mit einem anderen Wert, färbt sie sich nicht mehr zurück.
Code Zellen einfärben umgehen
10.08.2023 14:58:45
daniel
kann auch nicht.
du wolltest ja, dass die Farbe von Zellen, die nicht "A"; "B", oder "C" sind, so bleiben wie sie sind.
wenn du jetzt einen wert "A" löschst, dann ist er nicht mehr "A" und bleibt wie er ist.
das er vorher mal "A" war, weiß VBA an dieser Stelle nicht mehr. Und was es noch viel weniger weiß ist, welche Farbe die Zelle hatte, bevor dann "A" reingeschrieben wurde.

warum verwendest du hier nicht einfach die Bedingte Formatierung anstelle des Makros?
Die Bedingte Formatierung verhält sich genau so, wie du es dir hier wünscht.
die Farbe der bedingten Formatierung wird bildhaft gesprochen über die normale Farbe drüber gelegt, dh die alte ursprüngliche Farbe bleibt erhalten und wird wieder sichtbar, wenn die Bedingung nicht mehr zugrifft.

Gruß Daniel
Anzeige
Code Zellen einfärben umgehen
10.08.2023 15:37:57
Martina
Hallo Daniel,
vielen Dank für deine Antwort.
Bedingte Formatierung möchte ich aus zwei Gründen nicht verwenden: 1. wenn sich meine Vorgaben ändern, ändern sich alle Zellen (auch die, die vor einem Jahr formatiert wurden und damals unter anderen Bedingungen ok waren) mit und 2. vorallem wegen der starken Verlangsamung von Excel. Bei mir handelt es sich um große Datenmengen (zB 8 Tabellenblätter mit 20 Spalten und Einträgen bis Zeile 10000).

Bzgl. Formatierung: hier liegt das Problem nicht bei den Zellen, in denen ich A/B/C eintrage. Problem konkret: zb: Spalte G ist grau hinterlegt. Nur wenn A, B oder C eingeschrieben wird, sollte diese auf rot umfärben. Da ich aber im Case Else keine Farbe hinterlegt habe, wenn nicht A/B/C eingeschrieben wird, färbt sich die graue Zelle in Spalte G weiß anstatt grau zu bleiben.
Anzeige
Code Zellen einfärben umgehen
10.08.2023 15:49:55
daniel
naja, wie du das problem löst, wurde dir doch gezeigt.
wenn der Text nicht A, B oder C ist, dann keine Farbveränderung vornehmen.
Gruß Daniel
Code Zellen einfärben umgehen
11.08.2023 11:07:44
Martina
Nein, wie ich das Problem löse, hat mir noch niemand gezeigt. Mit dem vorhandenen Code wird jede Zellfarbe entfernt und entweder bei A, B, C in rot eingefärbt oder weiß gemacht. Ursprüngliche Farbe verschwindet leider wie schon gesagt.
Aber macht ja nichts, ichs werde es schon herausfinden :-) danke
AW: Code Zellen einfärben umgehen
11.08.2023 11:10:47
onur
Also nochmal:
Dim Zelle As Range, Bereich As Range

For Each Zelle In Target
Select Case Zelle.Value
Case "a", "b", "c"
Zelle.Interior.Color = RGB(238, 149, 114)
End Select
Next Zelle
Anzeige
Code Zellen einfärben umgehen
11.08.2023 11:15:58
daniel
hi
das was du willst, wird per VBA sehr aufwendig.
du musst nämlich jetzt nicht nur unterscheiden, ob ein einer Zelle, in der jetzt "X" steht, vorher ein "Y" oder ein "A/B/C" drin stand (das wäre sogar noch machbar), aber du musst dir irgendwie merken, welche Farbe die Zelle hatte, bevor "A/B/C" reingeschrieben wurde, damit du dann wieder auf diesen Wert zurückändern kannst.
und das ist die Crux an der Sache, das wird nicht so einfach.
Die Bedingte Formatierung ist hier die beste Lösung für diese Aufgabe.
Gruß Daniel
Code Zellen einfärben umgehen
11.08.2023 12:09:58
Martina
Auch hier danke für die Antwort.
Ja, ich denke ich werde einiges mit der bedingten Formatierung machen, es ist tatsächlich ziemlich umfangreich und kompliziert. Was ich halt bemerkt, ist, dass die bedingte Formatierung das System sehr langsam macht und manchmal auch ein Eigenleben entwickelt.
Anzeige
Code Zellen einfärben umgehen
11.08.2023 12:16:26
daniel
das passiert meistens dann, wenn in dem Zellbereich viel mit Zeilen einfügen oder Löschen gearbeitet wird, weil Excel dann aus einer bedingten Formatierung, die für einen größeren Bereich gilt, mehrere bedingte Formate mit gleicher Regel und Formatierung macht, die dann für kleinere Teilbereiche gelten.
Aber die Anzahl wächst das bremst Excel aus.
Hier wäre eine mögliche Lösung, dass man sich kein kleines "Aufräum"-Marko schreibt, dass alle bedingten Formatierungen löscht und dann wieder neu einrichtet.
AW: Code Zellen einfärben umgehen
11.08.2023 11:39:47
onur
Wie Daniel schon sagte: Wie soll VBA wissen, welche Farbe die Zelle mal hatte, bevor sie irgendwann mal den Wert "a", "b" oder "c" bekam?
Das könntest du aber umgehen, wenn du statt die Zellfarbe die Schriftfarbe ändern würdest.
Anzeige
Code Zellen einfärben umgehen
11.08.2023 12:07:29
Martina
In die Spalte, die grau hinterlegt ist, wird nie A, B, oder C geschrieben. Dennoch ändert sich die graue Hintergrundfarbe, wenn ich etwas anderes eingebe auf weiß.
Danke, ja die Idee mit der anderen Schriftfarbe hatte ich auch schon, das würde das Problem lösen. Werde ich versuchen.
DANKE
Code Zellen einfärben umgehen
11.08.2023 12:24:02
daniel
"In die Spalte, die grau hinterlegt ist, wird nie A, B, oder C geschrieben. "

ok, das ist eine Bedingung, die tatsächlich eine einfache Makrolösung erlaubt.
wenn also die Zellen, in die A,B,C geschrieben werden kann, entweder ungefärbt oder rot sind, kann man das abfragen und die grauen oder anders gefärbten Zellen aus der bearbeitung herausnehmen:

Dim Zelle As Range, Bereich As Range


For Each Zelle In Target
if Zelle.Interior.Color = RGB(238, 149, 114) or Zelle.Interor.ColorIndex = xlColorIndexNone
Select Case Zelle.Value
Case "a", "b", "c"
Zelle.Interior.Color = RGB(238, 149, 114)

Case Else
Zelle.Interior.ColorIndex = xlColorIndexNone
End Select
en dif
Next Zelle

End Sub


damit bleiben dann alle Zellen, die eine bestimmte Hintergrundfarbe haben, vom Farbwechsel ausgenommen.
Sie werden auch nicht umgefärbt, falls du doch mal A, B, oder C reinschreibst.

Gruß Daniel
Anzeige
Code Zellen einfärben umgehen
11.08.2023 12:40:05
Ulf
Hi Martina,
Spalte von Änderung ausnehmen und Farbe rücksetzen ?


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range, Bereich As Range
For Each Zelle In Target
Select Case Zelle.Value
Case "a", "b", "c"
Zelle.Interior.Color = RGB(238, 149, 114)
Case Else
If Target.Column > 7 Then
Zelle.Interior.ColorIndex = xlColorIndexNone
Else
'Farbe anpassen
Zelle.Interior.Color = RGB(190, 190, 190)
End If
End Select
Next Zelle
End Sub

hth
Ulf
Anzeige
AW: Code Zellen einfärben umgehen
11.08.2023 12:45:58
onur
Es geht darum, auf die LETZTE Farbe zurückzusetzen, die die Zelle mal hatte, bevor sie irgendwann mal verändert wurde, und nicht darum, ihr eine bestimmte Farbe zu geben.
Code Zellen einfärben umgehen
11.08.2023 13:20:36
Martina
Hallo Ulf,
danke für deine Nachricht. Funktioniert für eine Spalte super. Ich habe manchmal mehrere. Gibts nicht irgendeinen Code, der die Zellen einfach unverändert lässt, wenn nicht A,B oder C darin vorkommt? Danach suche ich vergeblich auf Google, aber ich bin mir sicher, dass es einen Code geben muss dafür.
Betreffen tut es die Zeile: Zelle.Interior.ColorIndex = xlColorIndesNone
Code Zellen einfärben umgehen
11.08.2023 13:24:57
daniel
der Code der eine Zelle unverändert lässt wenn nicht A,B oder C drin vor kommt ist:

Select Case Zelle.Value

Case "A", "B", "C"
Zelle.Interior.Color = deine Wunschfarbe
Select Case
End Select

aber das wurde dir doch schon mehrfach gesagt, Warum kapierst du das denn nicht?
du fragst immer das selbe, obwoh du dafür schon mehrfach antworten bekommen hast.
WARUM?????
Anzeige
Code Zellen einfärben umgehen
11.08.2023 13:30:23
Martina
Entschuldige, ich habe vergessen darauf einzugehen. Ganz einfach, weils nicht funktioniert. Select Case unter der Farbe wird nicht aktzeptiert.
AW: Code Zellen einfärben umgehen
11.08.2023 13:32:56
onur
Weil es END SELECT heissen muss.

ICH POSTE DIR DAS JETZT ZUM ZWEITEN MAL:
Dim Zelle As Range, Bereich As Range

For Each Zelle In Target
Select Case Zelle.Value
Case "a", "b", "c"
Zelle.Interior.Color = RGB(238, 149, 114)
End Select
Next Zelle
Code Zellen einfärben umgehen
11.08.2023 13:36:22
Martina
...danke, funktioniert tatsächlich. Endlich! Das nimmt mir sehr viel Arbeit ab. Hab wohl was übersehen. Problem gelöst :-) Lg und ein schönes Wochenende!
Anzeige
AW: Code Zellen einfärben umgehen
11.08.2023 13:38:00
onur
Das hatte ich dir schon heute um 11:10 Uhr gepostet.
AW: Code Zellen einfärben umgehen
11.08.2023 13:25:38
onur
Reden wir aneinander vorbei?
Den Code für "unverändert lassen" habe ich dir doch gepostet, aber ich hatte den Eindruck, dassd du mit "unverändert lassen" meinst, die alte Farbe, die die Zelle mal irgendwann (gestern, vorgestern ?) hatte, bevor sie auf a,b oder c geändert wurde meinst. Excel hat keinen "Lebenslauf" jeder einzelnen Zelle.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige