| 
    
     |  | 追加で少しコメントしておきます。 
 On Error Resume Next
 としているのでエラーが隠蔽されますが、このケースでは少なくとも2種類のエラーがありえます。
 (1)マッチするものがないことによるエラー
 (2)セル範囲の指定に不備があって発生するエラー
 
 両方を区別せずに、見逃してしまうOn Error Resume Nextの使用は、
 できるだけ避けたほうが良いと思います。
 (実際、この場合は、エラーにならないので、(2)に気づかなかったのでしょう)
 
 ---------------
 まず(2)については、
 Sheet1がアクティブであるときに、
 Sheet2.Range(Cells(1,1),Cells(5,1))
 などと書くことによるエラー。(今回のケースはこれです。)
 Sheet2.Range(Sheet1.Cells(1,1),Sheet1.Cells(5,1))
 と書いているのと同じですから、Excel君が混乱を来すのです。
 こうしたものはむしろエラーになるべきなんです。
 
 ---------------
 次に(1)ですが、
 AA = Application.WorksheetFunction.Match(ZRK, ws.Range(ws.Cells(3, 6), ws.Cells(PL, 6)), 0)
 ではなく、
 AA = Application.Match(ZRK, ws.Range(ws.Cells(3, 6), ws.Cells(PL, 6)), 0)
 とすることで、エラーで止まるのを避けることができます。
 
 該当が無い場合には、エラーを示す情報がAAに返りますから、
 If IsError(AA) Then などとして、マッチの有無を判定することができます。
 
 詳しくは、例えば、
 ht tps://www.moug.net/tech/exvba/0100035.html
 をごらんください。
 
 |  |