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

Mit VBA Spalten auf doppelte Werte prüfen ...

Mit VBA Spalten auf doppelte Werte prüfen ...
16.06.2016 18:16:16
Max
Hallo zusammen,
ich möchte ein Excel Tabellenblatt Spaltenweise mittels VBA Code auf doppelte Werte überprüfen. Sobald was eingetippt wird bzw.aus einem Drop Down Menü ausgewählt wird und doppelt auftritt soll es farbig markiert werden.
Bisher habe ich es über die Bedingte Formatierung/ Doppelte Werte farbig markieren gemacht. Ist zwar ganz gut und schön und funktioniert auch nur wird es langsam unübersichtlich und einen unerklärlichen Bug gibts auch schon ....
Es gibt wohl auch eine Formelbasierte Lösung, die möchte ich aber nicht da in dem Tabellenblatt schon mehrere Formeln drin sind und ich auch nicht so recht weiß wohin damit. Außerdem gibts mehrere Benutzer die mit "copy & paste" + Enft! regelmäßig für Chaos sorgen.
So nun hab ich von VBA net wirklich Ahnung und das wenige ist aus dem iNet zusammenkopiert und solange irgendwie bearbeitet worden bis es irgendwie funktioniert ;)
Hier ist mal der VBA Code zum o.g. Problem (allerdings nicht vollständig)
Leider ist das ganze langsam und umständlich, aber es funktioniert!
Ich suche nun einen schnelleren /besseren Code, der sich auch leicht ergänzen lässt und den ich vielleicht auch nachvollziehen kann.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngCell As Range
For Each rngCell In Range("D16:D56")
If WorksheetFunction.CountIf(Range("D16:D56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("K16:K56")
If WorksheetFunction.CountIf(Range("K16:K56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("O16:O56")
If WorksheetFunction.CountIf(Range("O16:O56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("S16:S56")
If WorksheetFunction.CountIf(Range("S16:S56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("W16:W56")
If WorksheetFunction.CountIf(Range("W16:W56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("AA16:AA56")
If WorksheetFunction.CountIf(Range("AA16:AA56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("AE16:AE56")
If WorksheetFunction.CountIf(Range("AE16:AE56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("AI16:AI56")
If WorksheetFunction.CountIf(Range("AI16:AI56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("AM16:AM56")
If WorksheetFunction.CountIf(Range("AM16:AM56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("AQ16:AQ56")
If WorksheetFunction.CountIf(Range("AQ16:AQ56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
For Each rngCell In Range("AU16:AU56")
If WorksheetFunction.CountIf(Range("AU16:AU56"), rngCell.Value) > 1 Then
rngCell.Interior.Color = RGB(240, 175, 180)     'RGB Farbwert - Flamingo1
Else: rngCell.Interior.ColorIndex = xlNone
End If
Next rngCell
If Target.Count Then
For Each rngCell In Range("K16:AU56")
Select Case rngCell.Value
Case "12"
rngCell.Interior.Color = RGB(186, 219, 244)     'RGB Farbwert - Wolkenblau
End Select
Next rngCell
End If
End Sub
Danke für Eure Hilfe

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA Spalten ...
16.06.2016 18:36:40
Fennek
Hallo,
ehrlich gesagt, ich habe nur den ersten Satz gelesen, aber vielleicht passt es trotzdem:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If WorksheetFunction.CountIf(Columns(Target.Column), Target.Value) > 1 Then MsgBox "doppelt"
'oder wenn es Farbe sein muss
If WorksheetFunction.CountIf(Columns(Target.Column), Target.Value) > 1 Then Target.Interior. _
Color = vbYellow
End Sub
mfg

AW: Mit VBA Spalten ...
16.06.2016 19:04:42
Max
Hallo Fennek,
also erstmal herzlichen Dank!
Dein Code funzt und ist auch schön kurz ;)
aber Du hättest doch bis zum Ende lesen sollen ...
was noch fehlt ist der Schnippsel ...
If Target.Count Then
For Each rngCell In Range("K16:AU56")
Select Case rngCell.Value
Case "12"
rngCell.Interior.Color = RGB(186, 219, 244) 'RGB Farbwert - Wolkenblau
End Select
Next rngCell
End If
Soll heißen der Wert 12 ist immer doppelt vorhanden und soll deshalb auch ne andere Farbe haben
Interior.Color = RGB(186, 219, 244) 'RGB Farbwert - Wolkenblau
außerdem soll jegliche Farbe wieder verschwinden wenn die Zellen leer sind oder die doppelten Werte wieder gelöscht werden.
Danke
Anzeige

45 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige