|
追加で少しコメントしておきます。
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
をごらんください。
|
|