Range Typen unverträglich
14.01.2019 20:27:31
StapelChips-Liebhaber
ich habe das Problem, dass bei einem Vergleich eines Wertes mittels Range.Value, die Meldung "Typen unverträglich" kommt. Das Ganze kommt aber nur, wenn ich den Vergleich auf einer größeren Excel-Datei laufen lasse mit mehreren Reitern und dort die genutzten Zellen vergleiche. Mache ich das gleiche bei weniger großen & komplexen Dateien, funktioniert es.
nach etwas Suche bin ich im Forum auf diesen Beitrag gestoßen: https://www.herber.de/forum/archiv/1292to1296/1293814_Range_Typen_unvertraeglich.html
Leider ist die dort verfasste Antwort nicht mehr verfügbar...
Hier mal mein Code (etwas ausgedünnt, sollte aber alles drin sein).
Das Problem beginnt hinter der For Each-Schleife
Sub Vergleich_Arbeitsmappen()
Dim iWS As Integer
Dim rngObj As Range
Dim wbWIPTracker As Workbook, wbWIPTrackerBackup As Workbook, wbCockpit As Workbook
Dim NewDocName As String, WIPTracker As String, WIPTrackerBackup As String, PathName As String
Dim wsTemp As Worksheet, wsSet As Worksheet, NewSheet As String
Set wbCockpit = Workbooks(ThisWorkbook.Name)
Set wsTemp = Sheets("DailyDrumbeat-Cockpit_TEMPLATE")
Set wsSet = Sheets("Einstellungen")
NewSheet = "DailyDrumbeat-Cockpit"
'Tabellenvergleich
'Vergleich der benutzen Zellen
For iWS = 1 To wbWIPTracker.Worksheets.Count
If wbWIPTracker.Worksheets(iWS).UsedRange.Cells.Count wbWIPTrackerBackup.Worksheets( _
iWS).UsedRange.Cells.Count Then
MsgBox "Die Anzahl der benutzen Zellen in Blatt " & iWS & " " & "ist _
unterschiedlich! Vergleich wird hier abgebrochen."
Exit Sub
End If
'Vergleich der Zellinhalte (für alten Wert)
i = 56 'Spalte für Ausgabe
For Each rngObj In wbWIPTracker.Worksheets(iWS).UsedRange
If rngObj.Value wbWIPTrackerBackup.Worksheets(iWS).Range(rngObj.Address).Value _
Then
wbWIPTracker.Worksheets(iWS).Activate
ActiveSheet.Range(rngObj.Address).Activate
wbWIPTrackerBackup.Worksheets(iWS).Activate
ActiveSheet.Range(rngObj.Address).Activate
'MsgBox "Unterschied wurde im Reiter '" & Worksheets(iWS).Name & "' in Zelle " & _
rngObj.Address(False, False) & " entdeckt!"
wbCockpit.Sheets(NewSheet).Range("O" & i).Value = Worksheets(iWS).Name _
'Tabellenname
wbCockpit.Sheets(NewSheet).Range("P" & i).Value = rngObj.Address(False, False) _
'Zelle
wbCockpit.Sheets(NewSheet).Range("R" & i).Value = Range(rngObj.Address(False, _
False)).Value 'Inhalt
i = i + 1
End If
Next
'Vergleich der Zellinhalte (für neuen Wert)
i = 56 'Spalte für Ausgabe
For Each rngObj In wbWIPTrackerBackup.Worksheets(iWS).UsedRange
If rngObj.Value wbWIPTracker.Worksheets(iWS).Range(rngObj.Address).Value Then
wbWIPTrackerBackup.Worksheets(iWS).Activate
ActiveSheet.Range(rngObj.Address).Activate
wbWIPTracker.Worksheets(iWS).Activate
ActiveSheet.Range(rngObj.Address).Activate
wbCockpit.Sheets(NewSheet).Range("Q" & i).Value = Range("B" & rngObj.Row).Value _
'Inhalt Spalte B (SAP Arbeitsschrittzusammenfassung)
wbCockpit.Sheets(NewSheet).Range("S" & i).Value = Range(rngObj.Address(False, _
False)).Value 'Inhalt / Wert
i = i + 1
End If
Next
Next
End Sub