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

vba worksheet_change

vba worksheet_change
24.06.2020 13:57:18
Ahmed
Hallo zusammen,
ich bin neu hier und bitte um eure Unterstützung bei folgendem Makro:
Bei einer Veränderung in der Spalte A soll in der gleichen Zeile in Spalte G überprüft werden, ob ein X vorhanden ist. Wenn ja, dann soll die Zelle in Spalte A mit der Farbe rot gefüllt werden. Das X wird über einen in der Zelle hinterlegten Sverweis aus einer anderen Tabelle übernommen.
Folgendes Makro habe ich geschrieben:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SpalteA As Range
Set SpalteA = Range("A:A")
On Error Resume Next
If Intersect(Target, SpalteA) Is Nothing Or Intersect(Target, SpalteA) = "" Then Exit Sub
If Target.Offset(0, 6).Value = "X" Or "x" Then Target.Offset(0, 0).Interior.ColorIndex = 3
End Sub

Folgende zwei Probleme habe ich:
1. Egal ob ein X in der Spalte G eingetragen ist oder nicht, die Zelle in Spalte A wird mit jedem neuen Eintag rot hinterlegt
2. Die Zelle in Spalte A bleibt rot hinterlegt, selbst wenn der Eintrag in Spalte A gelöscht wird. Mit dem Löschen des Eintrages in Spalte A wird auch automatisch das X in Spalte G gelöscht. Somit ist die Voraussetzung für die Hintergrundfarbe nicht mehr gegeben. Ich vermute, dass das Löschen des Zellen-Inhaltes in Spalte A nicht als Veränderung erkannt wird (?).
Hat jemand eine Idee, was an meinem Makro falsch ist?
Danke schon mal im Voraus für die Unterstützung.
Viele Grüße
Ahmed

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba worksheet_change
24.06.2020 14:30:26
Werner
Hallo,
meinst du so?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then
If Target  "" And UCase(Target.Offset(, 6)) = "X" Then
Target.Interior.Color = vbRed
Else
Target.Interior.Color = xlNone
Target.Offset(, 6).ClearContents
End If
End If
End Sub
Gruß Werner
AW: vba worksheet_change
24.06.2020 16:38:19
Ahmed
Hallo Werner,
super! Es hat funktioniert. Ich habe lediglich das Löschen des Inhaltes in Spalte G (Target.Offset(, 6).ClearContents) raus genommen
Vielen Dank!
Gerne u. Danke für die Rückmeldung. o.w.T.
24.06.2020 16:45:53
Werner
AW: vba worksheet_change
24.06.2020 14:34:57
Christian
Hallo Ahmed,
hast du schon mal drüber nachgedacht, das Färben der Zellen mittels bedingter Formatierung zu erledigen?
Falls es doch per VBA sein soll, dann z.Bsp. so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SpalteA As Range
Set SpalteA = Range("A:A")
If Intersect(Target, SpalteA) Is Nothing Then Exit Sub
If Target.Cells.Count = 1 Then
If Target  "" Then
If LCase(Target.Offset(0, 6).Value) = "x" Then
Target.Interior.ColorIndex = 3
End If
Else
Target.Interior.ColorIndex = xlNone
End If
End If
End Sub
Gruß
Christian
Anzeige
AW: vba worksheet_change
24.06.2020 16:44:43
Ahmed
Hallo Christian,
einwandfrei! Besten Dank!
Die bedingte Formatierung bis zur Zelle A2000 hat die Dateigröße enorm erhöht, daher wollte ich es mit VBA einstellen.
Vielen Dank und viele Grüße
Ahmed

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige