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

Setzen der Hintergrundfarbe nach Wertevergleich

Setzen der Hintergrundfarbe nach Wertevergleich
19.11.2019 11:42:55
Marimi
Guten Morgen liebe Forumsmitglieder,
ich hoffe, ihr könnt mir helfen oder mich zumindest auf den richtigen Weg bringen.
Ich habe wenig Ahnung und folgendes Szenario:
1. Tabellenblatt: Dateneingabe über ActiveX-Kombinationsfelder (Vorauswahl und Freitext möglich). LinkedCell jeweils in Spalte C.
2. Tabellenblatt: Ausgabeliste zur Abarbeitung (in völlig anderer Reihenfolge). Der Inhalt aus Tabelle1 wird per Formel, evtl. auch mit Zusatztext oder frei übersetzt übertragen. Range A1:BA54, ca. 150 Felder, diese bestehen aus verbundenen Zellen.
Nun möchte ich beim Abarbeiten meiner Ausgabeliste die erledigten Aufgaben grün kennzeichnen. _
Dies habe ich mit "per Klick grün einfärben" umgesetzt, das funktioniert für sich alleine prima. _

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set changeRange = Range("a2:ba54")
intColor = RGB(216, 228, 188)
If Not Application.Intersect(changeRange, Target) Is Nothing Then
With Target.Interior
.Color = IIf(.Color = intColor, xlNone, intColor)
End With
End If
End Sub

Jetzt mein Problem:
Nun kann es vorkommen, dass sich Tage/Wochen/Monate später Änderungen ergeben. Diese Auswahl möchte ich auf Tabellenblatt1 über die ActiveX Kombinationsfelder vornehmen und auf Tabellenblatt2, der Abarbeítungsliste, sollen sich die geänderten Felder dann wieder entfärben, so dass man auf einen Blick die Änderungen erkennen, einarbeiten und erneut grün / erledigt markieren kann.
Dies hatte ich versucht über:
1.) Modul plus CommandButton. Kurzzeitig funktionierte es.

Option Explicit
Sub IfThenElse()
Dim alterWert As Variant
If Worksheets("AB + BA").Cells(2, 8).Value  alterWert Then
Worksheets("AB + BA").Cells(2, 8).Interior.ColorIndex = xlColorIndexNone
End If
If Worksheets("AB + BA").Cells(2, 18).Value  alterWert Then
Worksheets("AB + BA").Cells(2, 18).Interior.ColorIndex = xlColorIndexNone
End If
If Worksheets("AB + BA").Cells(2, 24).Value  alterWert Then
Worksheets("AB + BA").Cells(2, 24).Interior.ColorIndex = xlColorIndexNone
End If
End Sub

2) Modul und CommandButton

Private Sub CommandButton2_Click()
Call ÄnderungenFärben
End Sub


Sub ÄnderungenFärben()
Dim rngPruefbereich As Range, rngCell As Range
On Error GoTo errEXIT
Application.EnableEvents = False
If rngBereich Is Nothing Then Set rngBereich = ActiveCell
Set rngPruefbereich = Intersect(rngBereich.Parent.Range("a2:bz100"), rngBereich)
If rngPruefbereich Is Nothing Then Exit Sub
For Each rngCell In rngPruefbereich
With rngCell
If .Value alterWert Then
Interior.Color = vbRed
End If
End With
Next rngCell
errEXIT:
Application.EnableEvents = True
End Sub

3) So funktioniert das Änderungen einfärben, aber ich kann es nicht mehr händisch grün färben:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("B1").Value alterWert Then
Range("B1").Interior.Color = vbRed
ElseIf Range("B1").Value = alterWert Then
Range("B1").Interior.Color = x1None
End If
Set changeRange = Range("A1:ZZ1000")
intColor = RGB(216, 228, 188)
If Not Application.Intersect(changeRange, Target) Is Nothing Then
With Target.Interior
.Color = IIf(.Color = intColor, xlNone, intColor)
End With
End If
End Sub

Nun habe ich hier auf der Seite folgendes gefunden:
Die Excel/VBA-Beispiele
Bei Eingaben oder Änderungen von Formelwerten soll eine Überprüfung mit den Vorgängerwerten stattfinden. Ist der neue Zellwert höher, soll die Hintergrundfarbe auf rot, ist er niedriger, soll sie auf gelb gesetzt werden.
https://www.herber.de/mailing/Setzen_der_Hintergrundfarbe_nach_Wertevergleich.htm
Ich dachte das für mein Problem anpassen zu können, scheitere aber kläglich.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vNew As Variant, vOld As Variant
If Intersect(Target, Range("a2:ba54")) Is Nothing Then Exit Sub
vNew = Target.Value
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Application.Undo
vOld = Target.Value
Target.Value = vNew
If vNew  vOld Then
Target.Interior.ColorIndex = 3
Else
Target.Interior.ColorIndex = xlColorIndexNone
End If
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Kann mir bitte, bitte irgendjemand einen Tipp geben, in welche Richtung ich laufen muss?!
Kann ich WorksheetChange in ein Modul auslagern und es bei Änderungen gezielt und einmalig über einen CommandButton die geänderten Zellen entfärben lassen?
Vielen Dank für die Mühe
Marimi

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Setzen der Hintergrundfarbe nach Wertevergleich
19.11.2019 13:17:24
Marimi
Anbei das Original in gekürzter Demoversion.
Nun funktioniert das händisch grün färben und das Entfärben bei Änderung.
Aber: alle Grünfärbungen werden entfernt wenn sich nur ein einziger Zellwert ändert.
https://www.herber.de/bbs/user/133305.xlsm
Mag mir jemand helfen?
Das wäre toll.
Lieben Dank
Marimi
Ich brauche bitte Hilfe
22.11.2019 09:20:36
Marimi
Guten Morgen,
kann oder möchte mir niemand helfen?
Hat niemand irgendeinen Tipp?
Ich drehe mich nach wie vor im Kreis und finde die Lösung nicht.
Dankeschön.
Marimi
AW: Ich brauche bitte Hilfe
22.11.2019 18:14:06
onur
"Anbei das Original in gekürzter Demoversion" - wie wäre es mal mit einer LAUFFÄHIGEN Demoversion ?
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige