2017-03-08 53 views
0

我正在創建一個將比較兩張工作簿兩張張的宏。如果在另一個工作簿中找到重複的行,我需要將該行突出顯示。到目前爲止,我一直在搜索,我發現了代碼,但我不確定如果在另一個工作簿的另一張表中發現重複的單元格/整行,我不知道該如何突出顯示。這裏是我下面的代碼:突出顯示兩張工作簿兩張之間的重複項

Sub CompareWorkbooks() 

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



strRangeToCheck = "B2:D49" 

Set wbkA = ActiveWorkbook 
Set varSheetA = wbkA.Worksheets("SAP").Range(strRangeToCheck) 
Set wbkB = Workbooks.Open(FileName:="C:\Request Distribution\Reminder 20170302.xls") 
Set varSheetB = wbkB.Worksheets("SAP").Range(strRangeToCheck) 

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

     'What to put to hightlight the cell/entire row 

    Else 

    'Some msgbox to display that there are no duplicates between sheets of 2 workbooks 

    End If 
Next 
Next 

End Sub 
+0

在使用Office 2013或以上的情況下,你可以使用內置比較器的預期效果,https://technet.microsoft.com/en-us/library /dn205148.aspx,重要信息: 必須先安裝.NET Framework 4.0,然後才能使用電子表格比較。 – Anil

+0

是varSheetA(iRow,iCol).Interior.Color = RGB(127,187,199)不工作? – Anil

+0

感謝您的建議。我需要使用vba,因爲我將它放在一個按鈕中,以便用戶點擊一下即可。 – Sevpoint

回答

1
Sub CompareWorkbooks() 

Dim varSheetA As Range 
Dim varSheetB As Range 
Dim r As Range 
Dim wbkA As Workbook 
Dim rFind As Range 

Set wbkA = ActiveWorkbook 
With wbkA.Worksheets("SAP") 
    .UsedRange.Interior.ColorIndex = xlNone 
    Set varSheetA = .Range("B2", .Range("B" & Rows.Count).End(xlUp)) 
End With 
Set wbkB = Workbooks.Open(Filename:="C:\Request Distribution\Reminder 20170302.xls") 
Set varSheetB = wbkB.Worksheets("SAP").Range(varSheetA.Address) 

For Each r In varSheetA 
    Set rFind = varSheetB.Find(What:=r, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False) 
    If Not rFind Is Nothing Then 
     r.Interior.Color = RGB(127, 187, 199) 
    End If 
Next r 

End Sub 
+0

感謝您的建議,我現在遇到錯誤的行:對於iRow = 1到varSheetA.Rows.Count,它說「對象需要」。 – Sevpoint

+0

你有沒有嘗試通過你的代碼?你是否使用我的代碼完全一樣 - 我也改變了聲明? – SJR

+0

它現在正在工作。不知何故,它突出了範圍B2:D49。我只需要突出顯示從其他工作簿的工作表檢測到的重複項。 – Sevpoint