• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのVBAで、エラーになった場合の回避)

エクセルのVBAで、エラーになった場合の回避

このQ&Aのポイント
  • エクセルのVBAでエラーになった場合の処理方法についてアドバイスをお願いします。
  • データベースのレコードを操作する4つのプロシージャがありますが、前と次の処理を実行する際にエラーが発生します。
  • ワークブックオープン時のイベントで最後の処理を呼び出しているため、基本的にエラーは出ませんが、一部のレコードを触る時にエラーが発生します。修正方法を教えてください。

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

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

とりあえずアテズッポで,たとえば次のようにしてみましょうか。 Sub Mae() on error goto errhandle If trg.row >= 3 Then Do Set trg = trg.Offset(-1, 0) Loop Until trg.EntireRow.Hidden = False If trg.row = 1 Then MsgBox "これより前のレコードはありません" Call Saisyo Exit Sub Else Call Tenki End If Else MsgBox "これより前のレコードはありません!" End If exit sub errhandle: call Saisyo End Sub Sub Tsugi() on error goto errhandle If trg.row < Worksheets("data").Range("A60000").End(xlUp).row Then Do Set trg = trg.Offset(1, 0) Loop Until trg.EntireRow.Hidden = False Call Tenki Else MsgBox "これより後ろのレコードはありません" End If exit sub errhandle: call saigo End Sub 「動いたり動かなかったりする」トラブルは,実データ(あるいはワークシートの様子)とマクロが整合していないのが原因ですから,ただマクロだけ眺めていても的確な解決策はみつかりません。 どういう状況で,マクロの具体的にどこの行が,どんなマクロの状況(たとえば変数の内容は? たとえばエラーになったその瞬間に,エラーになったマクロが触ろうとしていたセルなどの具合は?)でエラーになるのか,キチンと分析し理解するように心がけてください。必要に応じて,そういったあなたのエクセルで起きている「事実」を情報提供して,ご相談を投稿してください。 また,エラーの発生する具体的な状況(原因)を突き止めた次のステップとして,じゃぁその「リカバリーとしては具体的に何がどのようにあればよいのか」についてよく検討し,それをまたマクロに実装していきます。

puyopa
質問者

お礼

keithin様 回答ありがとうございます。 抽象的な質問にも関わらず、お答え頂き感謝いたします。 以後、エラー内容の分析と具体的事実を明確に述べる。を気をつけていきます。

関連するQ&A

専門家に質問してみよう