PDA

Vollständige Version anzeigen : Listen abgleichen und fehlende Einträge markieren


holarc
11.07.2014, 13:07
Hallo zusammen,
ich möchte zwei Listen vergleichen und fehlende Einträge markieren
Es sollen alle Artikel in Spalte D (Blatt3) markiert (durchgestrichen) werden, die in Spalte D (Blatt2) nicht enthalten sind.

Ich bekomme folgenden Fehler, weiß aber nicht wie ich sonst die Zeile und die Inhalte markieren und dann durchstreichen kann.
"Die Select-Methode des Range Objektes konnte nicht ausgeführt werden."

Ich hoffe jemand kann mir helfen!
Vielen Dank schonmal!!!!


Public Sub Suchen_und_markieren()

Dim WkSh_2 As Worksheet
Dim WkSh_3 As Worksheet
Dim lZeile As Long
Dim rZelle As Range

Set WkSh_2 = ThisWorkbook.Worksheets(2)
Set WkSh_3 = ThisWorkbook.Worksheets(3)

Sheets(3).Activate

Application.ScreenUpdating = False

For lZeile = 2 To WkSh_3.Cells(Rows.Count, 4).End(xlUp).Row

Set rZelle = WkSh_2.Columns(4).Find(What:=WkSh_3.Range("D" & lZeile).Value, LookAt:=xlWhole, LookIn:=xlValues)

If Not rZelle Is Nothing Then 'gefunden
rZelle.EntireRow.Select
With Selection.Font
.Strikethrough = True
.Color = -16776961
End With
End If
Next lZeile

Application.ScreenUpdating = True

Set WkSh_2 = Nothing
Set WkSh_3 = Nothing
Set rZelle = Nothing

MsgBox "Abgleich beendet."


End Sub

EarlFred
11.07.2014, 14:05
Hallo schonmal!!!!,

Du suchst einen Begriff in Blatt 2 und willst, sofern Du eine Fundstelle hast (rZelle), diese formatieren. rZelle ist ein Bereich im Blatt 2!
Du tust also etwas völlig anderes als beschrieben: Du streichst alle Werte in Blatt 2 durch, die auch in Blatt 3 enthalten sind.

Vielleicht solltest Du Deine Aufgabenstellung nochmal überdenken und diese, ggf. ergänzt um eine Mustermappe mit Darstellung des gewollten Ergebnisses, präzisieren.

Grüße
EarlFred

EarlFred
11.07.2014, 14:22
...und zu Deiner Frage:
da rZelle ein Bereich auf dem Blatt 2 ist und Du zuvor Blatt 3 selektiert hast, kann rZelle nicht selektiert werden. Selektieren kann man nur Bereiche auf dem aktiven Blatt.

Select und Activate sind zudem unnütz: Man kann auch sehr gut die Eigenschaften und Methoden der Bereiche nutzen, ohne sie vorher zu wählen - wie Du im restlichen Code ja recht ordentlich praktizierst. Woher kommt also die Gedankenänderung im mittleren Codeteil?

Grüße
EarlFred

holarc
14.07.2014, 09:57
Hallo EarlFred,
vielen dank schonmal für deine hilfe. ich bin kein geübter vba profi und habe versucht mir einen code so gut wie möglich zusammenzustellen.
ich habe jetzt mal im anhang eine musterdatei angehängt.
Es sollten alle nummern in Spalte D (Blatt3) markiert (durchgestrichen) werden, die in Spalte D (Blatt2) nicht enthalten sind.

wäre sehr dankbar für hilfe!

EarlFred
14.07.2014, 10:11
Hallo Name,

tut mir leid. Ich bin offenbar nicht geeignet, um im 2. oder 3. Blatt irgendwelche "Nummern" in Spalte D zu finden, die Deine Logik erklären würden.
Die Einträge auf Blatt 3 ("Tabelle2"), Zellen D2 und D3 sind identisch, der eine durchgestrichen, der andere nicht. Beide sind aber in Blatt 2 ("Tabelle1") in Spalte D zu finden.
Damit komm ich nicht klar.

Grüße
EarlFred