2013-05-17 70 views
0

我在同一個工作簿中有兩個工作表。第一個工作表包含最後一個階段的分數矩陣,第二個工作表包含這個階段的分數矩陣。比較兩個excel工作表的內容

我很努力地找到一個離開,以突出顯示這些期間的工作表中的不同於上期工作表的單元格。

我已經能夠儘可能識別已更改的單元格。我知道這是使用'MsgBoxes',但我找不到突出顯示已識別的單元格的方法。這可能是因爲我選擇了完全錯誤的方式。有人可以給我一個指導,我該如何去做這件事?

我有這個工作的代碼(根據MsgBox的反正)如下。我非常感謝任何指導。 謝謝,

Option Explicit 
Sub B_HighlightDifferences() 
'Workbooks("Scoring Matrix NEW").Activate 
    Dim varScoring As Variant 
    Dim varScoring_OLD As Variant 
    Dim strRangeToCheck As String 
    Dim irow As Long 
    Dim icol As Long 
    Dim color As CellFormat 
    strRangeToCheck = "bl9:bo15" 'smallrange for testing purposes only 
    varScoring = Worksheets("Scoring").Range(strRangeToCheck) 
    varScoring_OLD = Worksheets("Scoring_OLD").Range(strRangeToCheck) 
    For irow = LBound(varScoring, 1) To UBound(varScoring, 1) 
     For icol = LBound(varScoring, 2) To UBound(varScoring, 2) 
      If varScoring(irow, icol) = varScoring_OLD(irow, icol) Then 
       ' Cells are identical. ' Do nothing. 
       MsgBox "This has not changed" 
      Else 
       ' Cells are different. 
     ' Need code here to highlight each cell that is different 
       MsgBox "This has changed" 
End If 
      End If 
     Next icol 
    Next irow 
End Sub 
+1

您可以使用ActiveCell.Interior.ColorIndex = 36'將單元格的背景設置爲Excel的56種預設顏色之一(將ActiveCell設置爲適當的單元格引用)。 – chuff

回答

1

你做了大部分的辛勤工作。我會改變以下。地址:

dim newCell as Range 
Application.ScreenUpdating = False 

...那麼你的內部for循環:

Set newCell = varScoring.Cells(irow, icol) 

那麼你應該能夠適用任何你想newCell(這是一個Range對象)格式,當你發現它的不同。

newCell.Select 
With Selection.Interior 
    .Color = 49407 
    ' any formatting you want. 
End With 

在你的程序結束時,打開屏幕將再次更新於:

Application.ScreenUpdating = True 

讓我知道,如果這是有道理的。

+0

這是一個很好的解決方案,並且ScreenUpdating = False應該運行得很快。 – AxGryndr