| 
    
     |  | ▼γ さん: >追加で少しコメントしておきます。
 >
 >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
 >をごらんください。
 ありがとうございました。確かにエラー回避はプログラム進行の為必要との
 単純な考えでやってしまいました。どこにエラーがあるかわかれば非常に良いことです。もう一度じっくり勉強してみます。
 
 |  |