0
我在這裏有代碼形式的另一篇文章,但我似乎無法得到它實際上突出顯示每行單個單元格的差異。我有最新的表格和上一張表格;想法是代碼應該比較一列中的序列號(兩個工作表上的序列號)並做兩件事:匹配兩個工作表中同一列的值,然後比較整個行的差異
1)如果當前工作表中出現一個值,但不在「上一個」上,則整個當前工作表上的行突出顯示爲綠色。 (這與當前的代碼工作);和 2)如果在兩張紙上都有匹配的值,則應該比較這些行,並且當前工作表上與「上一頁」不同的任何值將高亮顯示爲黃色。 (這不起作用)
列的數量和順序始終相同。序列號不會更改,並且對每個條目都是唯一的。我一直在尋找的代碼是:
Sub NewUpdates()
Const ID_COL As Integer = 31 'ID is in this column
Const NUM_COLS As Integer = 32 'how many columns are being compared?
Dim shtNew As Excel.Worksheet, shtOld As Excel.Worksheet
Dim rwNew As Range, rwOld As Range, f As Range
Dim x As Integer, Id
Dim valOld, valNew
Set shtNew = ActiveWorkbook.Sheets("CurrentList")
Set shtOld = ActiveWorkbook.Sheets("PreviousList")
Set rwNew = shtNew.Rows(5) 'first entry on "current" sheet
Do While rwNew.Cells(ID_COL).Value <> ""
Id = rwNew.Cells(ID_COL).Value
Set f = shtOld.UsedRange.Columns(ID_COL).Find(Id, , xlValues, xlWhole)
If Not f Is Nothing Then
Set rwOld = f.EntireRow
For x = 1 To NUM_COLS
If rwNew.Cells(x).Value <> rwOld.Cells(x).Value Then
rwNew.Cells.Interior.Color = vbYellow
Else
rwNew.Cells.Interior.ColorIndex = xlNone
End If
Next x
Else
rwNew.EntireRow.Interior.Color = vbGreen 'new entry
End If
Set rwNew = rwNew.Offset(1, 0) 'next row to compare
Loop
End Sub
我沒有太大變化的編碼本身的東西,但我把這個從最初的討論沒有繼續深入任何。有關更新的任何想法,以便我可以突出顯示單個細胞顯示差異?
編輯:發現蒂姆威廉姆斯回答類似問題的鏈接,我發現這個代碼。它可以找到here。
這似乎這樣的伎倆。感謝您的快速訪問。 – Jon 2012-02-14 20:14:13