2016-10-26 2 views
1

Ich versuche ein Makro zu erstellen, um 2 Excel-Arbeitsbücher zu vergleichen und dann die Unterschiede hervorzuheben. Ich habe nach früheren Lösungen gesucht und sie haben mir sehr geholfen, aber ich kann dieses Makro immer noch nicht ausführen. Ich habe 2 Scripts erstellt, um zu sehen, welches am besten funktioniert.Vergleicht man 2 Excel-Arbeitsmappen und hebt die Unterschiede hervor

1.

Sub CompareWorkbooks() 

Dim varSheetA As Variant 
Dim varSheetB As Variant 
Dim strRangeToCheck As String 
Dim iRow As Long 
Dim iCol As Long 

strRangeToCheck = "A1:AK900" 

'Get worksheets from the workbooks 
Set wbkN = Workbooks.Open(Filename:="U:\gebouwensep.xlsx") 
Set Nieuweversie = wbkN.Worksheets("gebouwen") 


Set wbkO = Workbooks.Open(Filename:="U:\gebouwenaug.xlsx") 
Set Oudeversie = wbkO.Worksheets("gebouwen") 

If Nieuweversie <> Oudeversie Then 
    Nieuweversie.Sheets(gebouwen).Cells(iRow, iCol).Interior.Color = vbYellow 
End If 

End Sub 

Sub CompareWorkbooks() 

Dim varSheetA As Variant 
Dim varSheetB As Variant 
Dim strRangeToCheck As String 
Dim iRow As Long 
Dim iCol As Long 
Dim mycell As Range 
Dim mydiffs As Integer 

Nlin = 1 
Ncol = 1 

'get worksheets from the workbooks 
Set wbkA = Workbooks.Open(Filename:="U:\gebouwensep.xlsx") 
Set varSheetA = wbkA.Worksheets("gebouwen") 

Set wbkB = Workbooks.Open(Filename:="U:\gebouwenaug.xlsx") 
Set varSheetB = wbkB.Worksheets("gebouwen") 

strRangeToCheck = "A1:AK900" 

varSheetA = varSheetA.Range(strRangeToCheck) 
varSheetB = varSheetB.Range(strRangeToCheck) 

For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1) 
    For iCol = LBound(varSheetA, 2) To UBound(varSheetA, 2) 
     If Not varSheetA(iRow, iCol) = varSheetB(iRow, iCol) Then 

     Else 
       Nieuweversie.Sheets(gebouwen).Cells(iRow, iCol).Interior.Color = vbYellow 
     End If 
    Next iCol 
Next iRow 

End Sub 

Antwort

0

Meine Lösung für Code 2

Ihr Hauptproblem die folgende Zeile zu sein scheint:

Nieuweversie.Sheets(gebouwen).Cells(iRow, iCol).Interior.Color = vbYellow 

Sie haben keine Variablen für "Nieuweversie" oder "gebouwen" eingestellt. Die ehemaligen erscheint 2 ein Rest in Code um von Code 1 übrig, ich gehe davon aus, was Sie wirklich brauchen, diese Linie zu sein ist:

wbkA.Sheets("gebouwen").Cells(iRow, iCol).Interior.Color = vbYellow 

ich diese Lösung selbst getestet habe und es scheint, dass die Festsetzung Worksheet-Referenz bewirkt, dass die Unter richtig ausgeführt wird

auch - das funktioniert nicht in Code 1 entweder aufgrund der gleichen Zeile (ich habe den Rest des Codes nicht überprüft, kann es jedoch andere Probleme). Ihre Variable "Nieuwerversie" ist ein Arbeitsblatt, und was Sie tun, bezieht sich auf ein "Worksheet.Sheets" -Objekt, das keine gültige Referenz ist. Wenn Sie nur

verwendet
Nieuweversie.Cells(iRow, iCol).Interior.Color = vbYellow 

Dann sollten diese die gleiche Zeile im Code 1 beheben, obwohl ich sagen, dass ich nicht den Rest des Codes

+0

Danke für Ihre Hilfe getestet haben! Das löst das Problem :) – user7074164

Verwandte Themen