0

我在同一个工作簿中有两个工作表。第一个工作表包含最后一个时期的得分矩阵,第二个工作表包含这个时期的得分矩阵。

我正在努力寻找一个方法来突出显示此期间工作表中与上一期间工作表不同的那些单元格。

我已经能够识别更改的单元格。我知道使用“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
4

1 回答 1

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

让我知道这是否有意义。

于 2013-05-17T19:45:12.783 回答