-1
Sub RunCompare()

Call compareSheets("Latest", "SFDC")

End Sub

Sub compareSheets(shtLatest As String, shtSFDC As String)

Dim mycell As Range
Dim mydiffs As Integer

'For each cell in sheet2 that is not the same in Sheet1, color it yellow
For Each mycell In ActiveWorkbook.Worksheets(shtSFDC).UsedRange
    If Not mycell.Value = ActiveWorkbook.Worksheets(shtLatest).Cells(mycell.Row, mycell.Column).Value Then

        mycell.Interior.Color = vbYellow
        mydiffs = mydiffs + 1

    End If
Next

'Display a message box to demonstrate the differences
MsgBox mydiffs & " differences found", vbInformation
ActiveWorkbook.Sheets(SFDC).Select

End Sub
4

2 に答える 2

1
Sub RunCompare()

    compareSheets "Latest", "SFDC"

End Sub

'Compares two sheets and colours yellow any cell in sheet2 that is not the same as in sheet 1
Sub compareSheets(sheet1 As String, sheet2 As String)

    Dim rCell1 As Range
    Dim rCell2 As Range
    Dim nDiffs As Long ' Using a long because Integer may one day be too small

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet

    Set ws1 = ActiveWorkbook.Worksheets(sheet1)
    Set ws2 = ActiveWorkbook.Worksheets(sheet2)

    For Each rCell1 In ws1.UsedRange.Cells
        Set rCell2 = ws2.Range(rCell1.Address)
        If rCell1.Value <> rCell2.Value Then
            rCell2.Interior.Color = vbYellow
            nDiffs = nDiffs + 1
        End If
    Next rCell1

    Debug.Print nDiffs

End Sub

これは、実行可能なソリューションを作成するのに役立ちます。コードでは、「For Each mycell」行は、個々のセルではなく、「UsedRange」の各「Range」オブジェクトにループを作成します。

于 2013-08-05T06:10:36.630 に答える
0

「範囲外の下付き文字」は、無効なシート名に由来する可能性があります。

マクロを呼び出したときにアクティブなブックがLatestSFDCワークシートであると確信していますか?

問題とは直接関係ありませんが、関数プロトタイプを次のように変更することをお勧めします

Sub compareSheets(ByVal shtLatest As Worksheet, ByVal shtSFDC As Worksheet)

allActiveWorkbook.Worksheets(shtSFDC)shtSFDC( と同じshtLatest) に置き換え、最後に call をに置き換えます

Call compareSheets(ActiveWorkbook.Worksheets("Latest"), ActiveWorkbook.Worksheets("SFDC"))

またはコード名で直接:

Call compareSheets(sheet1, sheet2)

compareSheetsこれは、テキストではなくシートに期待されるように明確です。

于 2013-08-05T10:42:36.633 に答える