Um Tabellen zu vergleichen, möchte ich für jede Zeile einen String bilden, der mich zwei Zeilen auf 100% Übereinstimmung der Inhalte testen lässt.
Ich dachte an eine einfache Aneinanderreihung aller Zellenwerte der Zeile.
Durch mein Codekonstrukt bin ich allerdings darauf angewiesen, Workbook, Worksheet und Zeile aus Variablen zu beziehen.
Nun scheitere ich an der Formulierung von "Für jede Zelle im benutzten Bereich der Zeile s im Worksheet x des Workbook y, schreibe den Wert in einen String"
Beispiel:
For each Cell in Tabelle1.Range(Tabelle1.Cells(2,1),Tabelle1.Cells(2,7)
strgHash = strgHash & Cell.Value
Next Cell
Das funktioniert wunderbar.Problem: Ich brauche auch das Workbook als Variable, und da streikt .Range dann.
Mein Code:
For tb = 1 To 2
' Für jede Zeile in der Tabelle
For s = starttab(tb) To endtab(tb)
' Wenn einzelne Spalte als UID, dann...
If UIDsingle Then
' ... nehme den Wert als String
strgUID = Workbooks(WB(tb)). _
Worksheets(tabe(tb)).Cells(s, UID1.ListIndex + 1)
' ansonsten kombiniere UID aus mehreren Spalten:
Else
' durchlaufe alle UIDboxen
For cob = 1 To 4
' wenn UIDBox mit Inhalt, dann ...
If Controls("UIDcomb" & cob).Text "" Then
az = Controls("UIDcomb" & cob).ListIndex + 1
' ... füge Wert an UID an
strgUID = strgUID & Workbooks(WB(tb)). _
Worksheets(tabe(tb)).Cells(s, az)
End If
Next cob
End If
'Erstelle Hashstring aus allen Zellen der Zeile
For Each rngCell In Worksheets(tabe(tb)).Range(Worksheets(tabe(tb)).Cells(s, 1), _
Worksheets(tabe(tb)).Cells(s, 10))
strgHash = strgHash & rngCell.Value
Next ' Hashstring in Array
arrHash(s - starttab(tb), tb) = strgHash
' UIDstring in Array
arrUID(s - starttab(tb), tb) = strgUID
' reset UIDstring für nächste Zeile
strgUID = ""
'reset Hashstring für nächste Zeile
strgHash = ""
Next s
Next tb
Wie kann ich die gewünschte Funktion an oben markierter Stelle irgendwie realisieren?Vielen Dank und viele Grüße
Robert