【发布时间】:2017-03-08 23:12:22
【问题描述】:
我正在创建一个宏来比较两个工作簿的工作表。如果在另一个工作簿的工作表中发现重复,我需要突出显示该行。到目前为止,我一直在搜索并找到代码,但我不确定如果在另一个工作簿的另一张表中找到重复项,我如何突出显示单元格/整行。下面是我的代码:
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
【问题讨论】:
-
如果您使用的是 office 2013 或更高版本,您可以使用内置的比较器来获得所需的结果,technet.microsoft.com/en-us/library/dn205148.aspx,重要提示:必须先安装 .NET Framework 4.0,然后才能使用电子表格比较。跨度>
-
是 varSheetA(iRow, iCol).Interior.Color = RGB(127,187,199) 不起作用吗?
-
感谢您的建议。我需要将它与 vba 一起使用,因为我会将它放在一个按钮中,这样用户只需单击一下即可。
-
我尝试添加 varSheetA(iRow, iCol).Interior.Color = RGB(127,187,199)。但这给了我在线错误: For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1) 这是类型不匹配。可能是什么问题?
-
现在它显示该行所需的对象:varSheetA(iRow, iCol).Interior.Color = RGB(127,187,199)