| 
    
     |  | んーと・・さらに数式を簡素化することも追加して 
 Sub Get_MyData()
 Dim Sh1 As Worksheet, Sh2 As Worksheet
 Dim C As Range
 Dim Rnm As Long
 
 Set Sh1 = Worksheets("Sheet1")
 Set Sh2 = Worksheets("Sheet2")
 Sh1.Range("B2:D65536, AA:AA").ClearContents
 With Sh1.Range("A2", Sh1.Range("A65536").End(xlUp)).Offset(, 26)
 .Formula = "=MATCH($A2,Sheet2!$A:$A,0)"
 On Error Resume Next
 Intersect(.SpecialCells(3, 16).EntireRow, Sh1.Range("D:D")) _
 .Value = "該当なし !"
 On Error GoTo 0: On Error GoTo ELine
 For Each C In .SpecialCells(3, 1)
 Rnm = C.Value
 C.Offset(, -25).Resize(, 3).Value = _
 Sh2.Range(Sh2.Cells(Rnm, 2), Sh2.Cells(Rnm, 4)).Value
 Next
 ELine:
 .ClearContents
 End With
 Set Sh1 = Nothing: Set Sh2 = Nothing
 End Sub
 
 何が変わったかと言いますと、#N/Aエラーはエラーとして表示させ、SpecialCells
 メソッドの第二引数で、そのエラーのセルを検出するようにしたのです。これで先の
 コードより少しすっきりしますね。
 
 
 |  |