同じエクセル内で、新旧2種類のシート(項目順番は全く同じ)を
それぞれのシートのセルを一つずつ比較し変更箇所に黄色をつけるマクロを組みました。
ただ、旧シートのセル情報が空白、新シートのセル情報が入っている場合に色付けが出来ません。
「If Len(OldStr) > 0 Then」この部分で旧シートセルの空白が0とされるのでスルーされるのかなと思っているのですが、どの様に変更すればいいのか色々調べてもよくわからなくなりました。
わかる方教えていただけますでしょうか。
Sub 変更箇所チェック() ' 作業ワークシート Dim wksOld As Worksheet Dim wksNew As Worksheet ' 古いシートA、新しいシートBとする。 Set wksOld = Sheets("A") Set wksNew = Sheets("b") ' セル参照用のレンジ変数 Dim r As Range Dim rngOld As Range Set rngOld = wksOld.UsedRange ' 古いワークシートのセルを一個ずつループ For Each r In rngOld DoEvents Dim OldStr As String Debug.Print (r.Value) OldStr = r.Value ' 古いシートの比較対象セルの中身 **If Len(OldStr) > 0 Then** 'Newシートで比較するセルの行列番号を取得し、 'Oldシートにある同じ位置のセルを参照する Dim row As Long, col As Long row = r.row col = r.Column Dim rngNew As Range Set rngNew = wksNew.Cells(row, col) Dim NewStr As String NewStr = rngNew.Value '新しいワークシートの比較対象セルの中身 'StrComp関数で2つのセルの内容が等しいかをチェック If StrComp(OldStr, NewStr, vbTextCompare) <> 0 Then rngNew.Interior.Color = 65535 '黄色の定数 End If End If Next r Set wksNew = Nothing Set wksOld = Nothing Set rngOld = Nothing Set rngNew = Nothing End Sub
回答2件
あなたの回答
tips
プレビュー