VBAで2つのBOOKのセル範囲を比較
異なるBOOKのセル範囲のデータを照らし合わせ、不一致があるか確認したいのです。
その際、セル範囲をあらかじめVBAで決め打ちするのではなく、画面上で選択したいので、Application.Inputboxを使おうと思います。
以下のコードで一応はできたのですが、これを使うためには、画面を分割して2つのBOOKの該当箇所を「並べて比較」で並べて表示させておかなければ片方のシートしか選択することができません。
選択範囲が小さい場合は並べて表示させても問題ないのですが、かなり大きな範囲を選択する場合は、並べて表示で画面が半分にされると選択するのが大変です。
まず比較元シートを画面全体に表示して範囲選択し、次に比較先を表示して選択できるようにする方法があばとても作業が楽になります。
ご教示いただければ幸いです。
Sub 選択範囲データ比較() '2019/05/16
Dim myV, myW
Dim buf(1) As Range
Dim i As Long, m As Long, j As Long
Set buf(0) = Application.InputBox(Prompt:="セルを選択してください。", Type:=8)
myV = buf(0).Value
Set buf(1) = Application.InputBox(Prompt:="比較するセルを選択してください。", Type:=8)
myW = buf(1).Value
If UBound(myV, 1) <> UBound(myW, 1) Then
MsgBox "配列 1次元要素数が異なります。", vbCritical
Exit Sub
End If
If UBound(myV, 2) <> UBound(myW, 2) Then
MsgBox "配列 2次元要素数が異なります。", vbCritical
Exit Sub
End If
For i = LBound(myV, 1) To UBound(myW, 1)
For n = LBound(myV, 2) To UBound(myW, 2)
If myV(i, n) <> myW(i, n) Then
j = j + 1
End If
Next n
Next i
If j > 0 Then
MsgBox j & "個、相違があります。", vbCritical
Else
MsgBox "同一です。" _
& vbCrLf & "" _
& vbCrLf & "1次元:" & UBound(myV, 1) & "個" _
& vbCrLf & "2次元:" & UBound(myV, 2) & "個"
End If
End Sub
お礼
回答ありがとうございます。 書き込み内容を元に、無事VBAを 完成させることができました。 【目的】 イベントプロシージャに記述して 毎朝オープン時に当日の案件を強調させることにより作業漏れが なくなるようにしたいため 【参考になった点】 for each を使うにあたり、rg crg(該当列)の rgを作成させることが思いつかなかったため 1 TO crg(該当列)と数字の1を必ず使っていたため また、選択範囲があるわけでもないのでselectionも 違うのかなと