Ich habe ein VBA-Problem:
Meine Aufgabenstellung ist es die Datensätze zweier Arbeitsblätter miteinander zu vergleichen und sich unterscheidende Zellen farblich zu markieren. Außerdem soll eine Zeile mit sich unterscheidenden Daten in der letzten Spalte mit "ja" markiert werden. (Zusatzaufgabe: Zeilen ohne Änderung sollen ein "nein" erhalten.)
Dr. Google hat mich auf einen gut funktionierenden Code gebracht (siehe unten).
Dieser hat allerdings das Problem, dass die zu vergleichenden Datensätze wohl auf beiden Arbeitsblättern in derselben Zeile stehen müssen. Dies ist nun nicht immer der Fall. Deshalb ist das Codeergebnis falsch.
Mein Datenbestand ist so aufgebaut, dass die Spalte A einen eineindeutigen Schlüssel enthält. Diesen Schlüssel würde ich gerne benutzen, um die zu vergleichende Zeile zu ermitteln. Ich schaffe es leider nicht den Code dahingehend zu erweitern, dass die Vergleichsoperation über diesen Schlüsselwert die zu vergleichende Zeile sucht.
Könnt ihr mir dabei bitte helfen?!
Danke.
Hier der derzeitige Code:
-----------------
[code]
' Veränderungen zum Vorbestand markieren
sheetZuletzt = ThisWorkbook.Sheets("Stammdaten").Range("B2").Value
letzteSpalte = ThisWorkbook.Sheets(sheetJetzt).Range("A1").End(xlToRight).Column + 1
i = 0
With ThisWorkbook.Sheets(sheetJetzt)
lngLetzeS = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lngLetzeZ = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
arrT1 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
With ThisWorkbook.Sheets(sheetZuletzt)
arrT2 = .Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS))
End With
For i = 1 To lngLetzeZ
For j = 1 To lngLetzeS
'ThisWorkbook.Sheets(sheetJetzt).Cells(i, letzteSpalte).Value = "nein"
If arrT1(i, j) arrT2(i, j) Then
ThisWorkbook.Sheets(sheetJetzt).Cells(i, letzteSpalte).Value = "ja"
If Not rngBereich Is Nothing Then
Set rngBereich = Union(rngBereich, .Cells(i, j))
Else:
Set rngBereich = .Cells(i, j)
End If
End If
Next
Next
.Range(.Cells(1, 1), .Cells(lngLetzeZ, lngLetzeS)).Interior.ColorIndex = xlColorIndexNone
If Not rngBereich Is Nothing Then rngBereich.Interior.ColorIndex = 6
End With
[/code]
-----------------
Liebe Grüße,
Stefan