For gyou = GYOU_S To GYOU_E '開始行から終了行まで
For retsu = RETSU_S To RETSU_E '開始列から終了列まで
If s1.Cells(gyou, retsu).Value <> s2.Cells(gyou, retsu).Value Then
errflg = True
'同じ位置のセルの値が等しくなければ、そのセルを黄で塗りつぶす。
s1.Cells(gyou, retsu).Interior.Color = rgbYellow
End If
If s1.Cells(gyou, retsu).Value = s2.Cells(gyou, retsu).Value Then
s1.Cells(gyou, retsu).Interior.ColorIndex = 0
End If
Next
1Option Explicit
23Sub test()
4 Dim myFormula As String: myFormula = "=If(XXXX=YYYY,"""",NA())" '仮の数式を変数に代入
5 Dim rngOld As Range '元のデータのセル範囲
6 Dim rngNew As Range '比較するデータのセル範囲
7 Dim rngTemp As Range '一時的に数式を入れるセル範囲
8 Dim rngResult As Range '検索したセル範囲
9 Dim strAddress As String 'セル範囲のアドレスを示す文字列
10 Dim i As Long '見つけたセルの個数
11 Dim sProm As String 'メッセージボックスに表示する文字列
1213 sProm = "完成"
14 'セル範囲を変数に取得
15 With ThisWorkbook.Worksheets
16 Set rngNew = .Item("Sheet2").UsedRange
17 strAddress = rngNew.Address
18 Set rngOld = .Item("Sheet1").Range(strAddress)
19 Set rngTemp = .Item("Sheet3").Range(strAddress)
20 End With
2122 '数式内の仮のセルアドレスを実際のものに書き換え一時的な作業用シートに入力
23 myFormula = Replace(myFormula, "XXXX", rngNew(1).Address(False, False, , True))
24 myFormula = Replace(myFormula, "YYYY", rngOld(1).Address(False, False, , True))
25 rngTemp.Formula = myFormula
2627 '検索したセルがみつからないとエラーになるので、えらーを無視する宣言
28 On Error Resume Next
29 '計算結果が、エラーのセルを検索
30 Set rngResult = rngTemp.SpecialCells(xlCellTypeFormulas, xlErrors)
31 '見つけたセルの数を数える
32 i = rngResult.CountLarge
33 '見つけたセルのアドレスを比較するデータのセルのアドレスに適用して黄色を塗る
34 rngNew.Worksheet.Range(rngResult.Address).Interior.Color = vbYellow
35 'エラーの無視を解除
36 On Error GoTo 0
3738 If i > 0 Then sProm = i & 未入力
3940 '一時的に入れた数式のクリア
41 rngTemp.ClearContents
4243 MsgBox sProm
44End Sub
cnt = 0 ' カウンターをリセット
For gyou = GYOU_S To GYOU_E '開始行から終了行まで
For retsu = RETSU_S To RETSU_E '開始列から終了列まで
s1.Cells(gyou, retsu).Interior.ColorIndex = 0 'セルの色をリセット
If s1.Cells(gyou, retsu).Value <> s2.Cells(gyou, retsu).Value Then
'同じ位置のセルの値が等しくなければ、そのセルを黄で塗りつぶす。
s1.Cells(gyou, retsu).Interior.Color = rgbYellow
cnt = cnt + 1 'カウンターに1をたす。
End If
next retsu
next gyou
If cnt > 0 Then
MsgBox cnt & "個未完成です"
Else
MsgBox "完成です。"
End If
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/29 01:49