比较同一工作簿中的两张excel工作表,突出显示差异
我正在用Excel2007VBA做我的第一步。我要做的是编写一个宏,比较上一个和第二个excel工作表,并突出显示上一个工作表中的差异。正如您在下面看到的,我编写了以下代码,并且当我使用调试模式时,Excel不会显示任何错误,但它不会标记任何已进行更改的单元格,这是它应该做的。有人介意看一看并纠正我在下面代码中的潜在错误吗。多谢各位比较同一工作簿中的两张excel工作表,突出显示差异,excel,vba,Excel,Vba,我正在用Excel2007VBA做我的第一步。我要做的是编写一个宏,比较上一个和第二个excel工作表,并突出显示上一个工作表中的差异。正如您在下面看到的,我编写了以下代码,并且当我使用调试模式时,Excel不会显示任何错误,但它不会标记任何已进行更改的单元格,这是它应该做的。有人介意看一看并纠正我在下面代码中的潜在错误吗。多谢各位 Sub compare() Dim sh1 As Worksheet, sh2 As Worksheet Dim rCount As Long, cCount As
Sub compare()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim rCount As Long, cCount As Long
Set sh1 = Worksheets(Sheets.Count - 1)
Set sh2 = Worksheets(Sheets.Count)
rCount = sh1.Cells(Rows.Count, 1).End(xlUp).Row
cCount = sh1.Cells(Rows.Count, 1).End(xlUp).Row
Dim r As Long, c As Integer
For r = 1 To rCount
For c = 1 To cCount
If sh1.Cells(r, c) <> sh2.Cells(r, c) Then
sh2.Cells(r, c).Interior.ColorIndex = 3
End If
Next c
Next r
End Sub我猜sh1中只有一行数据。当您分配rcount时,您得到的值为1;当您分配cCount时,您得到的值相同,因为您分配它的方式与rcount相同。然后您可能会遍历一行和一列,只比较一个单元格,然后子例程退出
也许您的意思是:cCount=sh1.Cells1,ColumnsCount.EndxltoLeft.Column您的cCount与rCount相同,但这并不能解释未标记单元格的原因。您测试过rCount的值吗?行和列的建议是正确的。非常感谢。Marco使用sh1和sh2的定义名称。但是这些名字是动态的,我的代码没有使用最后一页和最后第二页。有什么想法吗?不幸的是,我不知道为什么动态的“最后一页”逻辑不起作用。我以前从未见过这种用法,但有很多我没有见过,所以我认为它适合你的情况。您可能需要考虑一个常见的表命名约定,例如“数据表1”、“数据表2”等。然后,您可以通过您的页循环,然后选择RealWorksHeut.No.1,以确定哪一页是最后一页。