パーツ化とは
ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。
処理はパーツ単位で分ける事を心掛けましょう。
分かりやすく説明すると、エクセルの「関数」と同様です。
SUM関数であれば セル内に「=SUM(1+2+3)」と記載すれば、セルには「6」と表示されますよね。
値を渡せば正しい値で返ってくる動きです。
このコードをコピペでOK
'■指定範囲を比較し、差異があれば背景色を赤色にする
Public Function call_compare(ws1 As Worksheet, rng1 As Range, ws2 As Worksheet)
Dim i As Long, j As Long
Dim sRow As Long, sCol As Long
Dim eRow As Long, eCol As Long
'■rng(Rangeオブジェクト)を分解
sRow = rng1.Row
sCol = rng1.Column
eRow = rng1.Row + rng1.Rows.Count - 1
eCol = rng1.Column + rng1.Columns.Count - 1
'■開始セルから終了セルまでループさせる
For i = sRow To eRow
For j = sCol To eCol
'■ws1とws2で値が異なれば、背景色を赤色にする
If ws1.Cells(i, j).Value <> ws2.Cells(i, j).Value Then
ws2.Cells(i, j).Interior.ColorIndex = 3
End If
Next
Next
End Function
使い方
上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。
Public Sub test()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = ActiveWorkbook.Worksheets(1)'ActiveWorkbookの1枚目のシート
Set ws2 = ActiveWorkbook.Worksheets(2)'ActiveWorkbookの2枚目のシート
Call call_compare(ws1, Range("A2:H20"), ws2)
End Sub
結果イメージ
指定した範囲でセルの値が異なれば、背景色を赤色にします。
出力データが、手動で行ったデータと一致しているかどうか一目でわかります。
注意点
本コードは以下のような形で使用します。



コメント