• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ループの中で何度もエラー処理をしたい場合)

ループ中でのエラー処理について

このQ&Aのポイント
  • ループの中で何度もエラー処理をしたい場合、On Error Resume Next以外の方法がありますか?
  • 実際にはセルの文字を取得するコードとは違いますが、ループ内でエラーが発生してもエラー処理を続ける方法を教えてください。
  • エラーが発生した場合でもループを続けて処理する方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

基本中の基本ですが、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

JAFTZUEFPHYJU
質問者

お礼

resume next がないダメなのですね。

その他の回答 (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さんの書かれたとおりとなります。

JAFTZUEFPHYJU
質問者

お礼

1さんの回答のように ループの外にエラー処理を入れるべきなのですね。

関連するQ&A

専門家に質問してみよう