Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

[Excel 2007] Tabellenspalten vergleichen

cosmo_kramer / 15 Antworten / Flachansicht Nickles

Hallo Leute,

ich habe zwei Fragen :

Dieser Makro-VBA-Code prüft eine Spalte von 2 verschiedenen Tabellenblättern und markiert Übereinstimmungen im aktiven Blatt grün.

For ZeileB1 = 3 To 150
For ZeileB2 = 3 To 150
If ThisWorkbook.ActiveSheet.Range("B" & ZeileB1) = Sheets("8.KW").Range("B" & ZeileB2) Then
ThisWorkbook.ActiveSheet.Range("B" & ZeileB1 & ":" & "B" & ZeileB1).Select
With Selection.Interior
.Color = 5287936
End With
End If
Next ZeileB2
Next ZeileB1

1. Frage :
Wie bringe ich das Makro dazu, statt zu Färben gleich die komplette Zeile zu übernehmen?

2. Frage :
Wie bringe ich das Makro dazu, Spalte B des aktiven Blattes mit Spalte B des vorherigen Blattes miteinander zu vergleichen ?
Erklärung dazu : In der Mappe kommt jede Woche ein neues Blatt hinzu, welches nur mit der Vorwoche verglichen werden muss. Im oberen Code wird der Vergleich zwischen ActiveSheet und 8.KW angestoßen, ich benötige aber eher Vergleich zw. ActiveSheet und ActiveSheet-1.

Vielen Dank.

bei Antwort benachrichtigen
cosmo_kramer Nachtrag zu: „@PaoloP : Ich versteh das auch nicht ... wenn ich aus For ZeileB1 3 To 150 For...“
Optionen

Set wks1 = ThisWorkbook.Worksheets(Sheets.Count)
Set wks2 = ThisWorkbook.Worksheets(Sheets.Count - 1)

For ZeileB1 = 3 To 100
For ZeileB2 = 3 To 100
If wks1.Range("B" & ZeileB1) = wks2.Range("B" & ZeileB2) Then
CopyRowValues(wks2, ZeileB2, wks1, ZeileB1)
End If
Next ZeileB2
Next ZeileB1

Hab den Code etwas aufgehübscht.
Deine Zeile CopyRowValues(ActiveWorkbook.Worksheets(Sheets.Count - 1), ZeileB2 , _
ActiveWorkbook.Worksheets(Sheets.Count), ZeileB1 ) sieht dann ja so aus :
CopyRowValues(wks2, ZeileB2, wks1, ZeileB1)
Wenn diese wie im Code oben eingefügt wird, meldet VB :
"Fehler beim Kompilieren - Erwartet : = " .
Beim Durchlauf kommt eben auch der Syntaxfehler für diese Zeile.

Da ich ein Laie bin, komme ich hier nicht weiter.

Vielen Dank für die bisherige Hilfe und fürs Verständnis.

Grüße.
bei Antwort benachrichtigen