0

同じブックに 2 つのワークシートがあります。最初のワークシートには最後の期間のスコア マトリックスが含まれ、2 番目のワークシートにはこの期間のスコア マトリックスが含まれます。

この期間のワークシートで、前回の期間のワークシートとは異なるセルを強調表示する方法を見つけるのに苦労しています。

変化した細胞を特定するところまで行くことができました。「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 に答える