- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ループの中で何度もエラー処理をしたい場合)
ループ中でのエラー処理について
このQ&Aのポイント
- ループの中で何度もエラー処理をしたい場合、On Error Resume Next以外の方法がありますか?
- 実際にはセルの文字を取得するコードとは違いますが、ループ内でエラーが発生してもエラー処理を続ける方法を教えてください。
- エラーが発生した場合でもループを続けて処理する方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本中の基本ですが、Resumeしない限り、次のエラー処理を起こす方法はありません。 sub macro1() dim i as long, j as long on error goto errhandle for i = 0 to 5 j = "a" next i exit sub errhandle: msgbox "ERR " & i resume next end sub
その他の回答 (1)
- asciiz
- ベストアンサー率70% (6822/9701)
回答No.2
on error goto の行き先が、ループの中に飛び込んでいるというのが、そもそもの間違いです。 on error goto とは、「goto」という単語が使われていますけど、実際には 「エラー処理用の『サブルーチン』を『呼ぶ(gosubのように)』」ように使うものです。 on error goto により、エラー検出したなら全処理を停止して終了する、というエラー処理ならば、 単純なラベルにしていきなりジャンプしてしまうのでも構いません。 でも、今回は違います。 そこでまず、on error goto により、「エラーが起こった時に呼ばれるサブルーチン」を定義します。 そして、エラーが起こると、そこに if も gosub も書かれていなくても、エラー処理サブルーチンが呼ばれます。 独立したエラー処理用のサブルーチンの中でエラー処理を行い、エラー処理が済んだら、 resume next により、エラーの起こった位置(元の位置)の次の命令から再開できます。 そのように書くのが本来の形であり、ANo.1さんの書かれたとおりとなります。
質問者
お礼
1さんの回答のように ループの外にエラー処理を入れるべきなのですね。
お礼
resume next がないダメなのですね。