エクセルVBAで以前に質問させて頂き回答頂いたのですが Sub Test() Dim rng As Range, i As Long

画像

Visual Basic | Excel89閲覧

ベストアンサー

0

その他の回答(1件)

0

Sheet2のD列の値がSheet1の表に無い場合は Application.VLookup(.Cells(i, "D").Value, rng, 2, 0) がエラーになりますが、 On Error Resume Next が宣言されているので、エラーがあっても次の命令 .Cells(i, "D").Value = "" が実行され、空白にされます。 したがって、 Application.VLookup(.Cells(i, "D").Value, rng, 2, 0) がエラーであるかを判定し、エラーになる場合は処理が次の値に移る条件を加えます。 Sub Test() Dim rng As Range, i As Long Set rng = Worksheets("Sheet1").Range("B20:C29") With Worksheets("Sheet2") On Error Resume Next For i = 2 To .Cells(.Rows.Count, "D").End(xlUp).Row If IsError(Application.VLookup(.Cells(i, "D").Value, rng, 2, 0)) = False Then If Application.VLookup(.Cells(i, "D").Value, rng, 2, 0) = 1 Then .Cells(i, "D").ClearContents End If End If Next i End With End Sub