Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1520to1524
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

Zellenfärbung rückgängig

Zellenfärbung rückgängig
07.11.2016 11:27:07
Fynn
Guten Tag,
ich benutze für eine Excel-Tabelle den folgenden Befehl:
Option Explicit
Public AlterWert As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
AlterWert = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target  AlterWert Then Target.Interior.ColorIndex = 6
End Sub

Ich möchte diesen Befehl gerne so anpassen, dass das Feld sich wieder zurücksetzt was die Farbe angeht, sobald der Wert in dem Feld dem Wert entspricht, der vor der Änderung im Feld stand.
Um ein kleines Beispiel zu geben:
Ich habe ein leeres Feld und wenn ich einen Wert eingebe, dann wird es gelb ausgefüllt. Wenn ich nun aber das Feld wieder leere, also den Wert herausnehme, dann bleibt das Feld gelb. Ich hätte es aber gerne so, dass das Feld dann wieder die ursprüngliche Farbe annimmt, sodass ersichtlich wird das sich nichts geändert hat.

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

Betreff
Datum
Anwender
Anzeige
AW: Zellenfärbung rückgängig
07.11.2016 19:00:23
ChrisL
Hi Fynn
Mit einer Codeerweiterung wirst du m.E. nicht glücklich, weil
a) Bereichsauswahl resp. Copy/Paste von ganzen Bereichen funktioniert bereits jetzt nicht.
b) Du müsstest nicht nur einen "alten Wert" sondern einen "letzten und vorletzten Wert" speichern. Sinngemäss:
Vorletzter = Letzter
Letzter = Target
If Target = Vorletzter Then
Target.Interior.ColorIndex = xlautomatic
Else
Target.Interior.ColorIndex = 6
End If
Problem dabei ist, dass ausschliesslich der vorletzte Wert berücksichtigt wird. Kehrt der User erst nach mehreren Klicks (=Selection) in die Zelle zurück, funktioniert es nicht.
Wenn es nur ums Leeren der Zelle geht:
If Target = "" Then
Target.Interior.ColorIndex = xlautomatic
Else
Target.Interior.ColorIndex = 6
End If
Alternative:
Einmalig den Ursprungszustand der Tabelle kopieren. Beide Tabellen nebeneinander und z.B. mittels bedingter Formatierung abgleichen/färben (Formel ist: =A1X1 dann Farbe).
cu
Chris
Anzeige
AW: Zellenfärbung rückgängig
08.11.2016 10:50:24
Fynn
Hi Chris,
vielen Dank für die schnelle Antwort!
Ist der Code, den du verfasst hast, der ganze Code oder muss ich die Teile in meinen einfügen?
AW: Zellenfärbung rückgängig
08.11.2016 12:46:19
ChrisL
Hi Fynn
Vermutlich brauchst du sogar den Vor-Vorletzten Wert...
Public Letzter As Variant
Public Vorletzter As Variant
Public VorVorletzter As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VorVorletzter = Vorletzter
Vorletzter = Letzter
Letzter = Target
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If IsEmpty(VorVorletzter) Then Target.Interior.ColorIndex = 6
If Target = VorVorletzter Then
Target.Interior.ColorIndex = xlAutomatic
Else
Target.Interior.ColorIndex = 6
End If
End Sub

cu
Chris
Anzeige
AW: Zellenfärbung rückgängig
08.11.2016 18:04:05
ChrisL
Hi Fynn
Die IsEmpty Zeile ist Quatsch...
Public Letzter As Variant
Public Vorletzter As Variant
Public VorVorletzter As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VorVorletzter = Vorletzter
Vorletzter = Letzter
Letzter = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target = VorVorletzter Then
Target.Interior.ColorIndex = xlAutomatic
Else
Target.Interior.ColorIndex = 6
End If
End Sub

Fehler Quick&Dirty überspringen (z.B. wegen Mehrfachauswahl).
Kurz zum Thema "Vor-Vorletzt", angenommen Ausgangswert ist "x":
Target selektieren:
Letzer = "x"
Target ändern und in nächste Zelle Springen:
VorLetzer = "x"
Letzter = "y"
Wieder zurück in die Ursprungszelle springen:
VorVorletzter = "x"
Vorletzter = "y"
Letzter = "z"
Target ändern und mit VorVorletzer abgleichen...
cu
Chris
Anzeige
AW: Zellenfärbung rückgängig
09.11.2016 09:07:47
Fynn
Moin Chris,
vielen Dank für die große Hilfe!
Ich gebe also alles so wie von dir ausgeschrieben ein und dann sollte es funktionieren, ja?
Public Letzter As Variant
Public Vorletzter As Variant
Public VorVorletzter As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
VorVorletzter = Vorletzter
Vorletzter = Letzter
Letzter = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target = VorVorletzter Then
Target.Interior.ColorIndex = xlAutomatic
Else
Target.Interior.ColorIndex = 6
End If
End Sub
Viele Grüße
Fynn
Anzeige
AW: Zellenfärbung rückgängig
09.11.2016 09:41:41
Daniel
Hi
würde ich ganz anders lösen:
1. lege ein zweites Tabellenblatt an und füge dort an gleiche Zelladresse den jeweiligen Sollwert ein, dh den Wert, bei dem die normale Zellfarbe erscheinen soll.
2. erstelle dann für alle Zellen auf dem ursprünglichen Tabellenblatt eine Bedingte Formatierung mit der Regel: =A1Tabelle2!A1 und der entsprechenden Farbe
dh immer wenn in Tabelle1 der Zellwert vom Sollwert aus Tabelle2 abweicht, wird die Bedingte Formatierung angewendet, sind die Werte gleich, erscheint der normale Zellfarbe.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige