
No.1ベストアンサー
- 回答日時:
エラーをトラップするには、On Errorステートメントを使います。
On Errorステートメント自体は、何かをする命令ではないのですが、
これ以降に発生したエラーに対しての動作が定義できます。
通常、Workbook.Open でエラーが発生すると、そこでプログラムの
動作は停止しますが、次のようなコードにすると動作は停止せず、
行ラベル「ErrorHandler」へ制御が飛びます。
On Error GoTo ErrorHandler
Workbook.Open~ '←ここでエラーが発生すると
On Error GoTo 0
・
・
・
Exit Sub
ErrorHandler: '←ここへ制御が移ります
・
・
End Sub
OverTheGalaxyさんが書いたプログラムの構造が分からないので、何とも言えないのですが、
きれいに構造化されていれば、Subプロシージャを抜けるだけで対応できるかもしれません。
ちなみに、On Error で定義した動作は、すべてのエラーで有効になってしまいます。
デバッグ中のプログラムは、色々なところでエラーを起こすものですが、その場合も
動作は停止しません。(おかしな動作をするだけで、エラーの発生箇所が分からない状況になります)
エラーの発生が予想される箇所(今回の場合は、Workbook.Open)を過ぎたら、速やかに
エラートラップを無効にすることをお勧めします。
エラートラップを無効にするには、「On Error GoTo 0」を使います。
この回答へのお礼
お礼日時:2016/02/05 22:31
ありがとうございます。
ErrorHandlerへ移動しエラー用の処理を実行した後、どうなるのでしょうか?On Error GoTo 0 へ戻るのでしょうか?
No.2
- 回答日時:
Resumeステートメントで戻り先を指定します。
こんな感じです。
ErrorHandler:
・
・
Resume '←エラーが発生した命令から実行が再開されます。
Resume Next '←エラーが発生した命令の次の命令からに再開されます。
Resume 行ラベル '←指定した行ラベルへ戻ります。
・
・ ' それ以外にも、Exit SubやEnd等も記述可能だと思いますが、何も書かないと
End Sub '←ここにくるので、当プロシージャは終了します。
詳しくは、ヘルプを参照してください。
この回答へのお礼
お礼日時:2016/02/05 23:28
ありがとうございます。
時々目にするResumeはこうやって使う!の一端が見えた気がしました。
実はErrHandlerなんて初めて使います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
【マクロ】エラー【#DIV/0!】が...
-
実行時エラー -'-2147417848
-
実行時エラー48発生時のDLL特定...
-
Outlook.ApplicationをCreateOb...
-
「アプリケーション定義または...
-
ExcelVBA Range クラスの Page...
-
VBAでのエラー
-
Access:結果は出るがエラー
-
ACCESSのエラーで困っています
-
エラーDlg「An invalid argumen...
-
VBAのエラー発生場所をメッセー...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
カーソルオープンでエラー(ORA...
-
マクロでのActiveSheet.Pasteで...
-
BorderクラスのLinestyleプロパ...
-
Invalid procedure call or arg...
-
'Speak'メソッドは失敗しました
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
【マクロ】エラー【#DIV/0!】が...
-
なぜこんな初歩的なVBAのIf文で...
-
マクロについて教えてください...
-
VBAでのエラー
-
ExcelVBA Range クラスの Page...
-
実行時エラー48発生時のDLL特定...
-
実行時エラー3001「引数が間違...
-
VBAで、定数式が必要ですのエラ...
-
Outlook.ApplicationをCreateOb...
-
あとこれさえ出来ればよいので...
-
VB6+SQL サーバー 2000 で 実行...
-
VBS実行時エラー オブジェクト...
-
EXCEL/VBAで、自分のPCだけエラ...
-
EXCEL VBAマクロ中断でデバッグ...
-
VBAのエラー発生場所をメッセー...
-
なぜエラーになるのでしょうか...
-
Invalid procedure call or arg...
おすすめ情報