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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- グループウェア 一太郎がイントラで開けません。対処方法を知りたいです。 3 2023/04/04 13:30
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
Outlook.ApplicationをCreateOb...
-
実行時エラー3001「引数が間違...
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
エクセルエラー13型が一致しま...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
VBSで変数の宣言はできないので...
-
Application.ActiveInspectorで...
-
実行時エラー48発生時のDLL特定...
-
エクセルVBA、フリーフォームで...
-
なぜこんな初歩的なVBAのIf文で...
-
■VBA■ SUMとAVERAGEの違い
-
VBAのエラー発生場所をメッセー...
-
Excel2003でworksheetクラスのC...
-
プロシージャ名の取得
-
【VBA-AC2000】カレントプロシ...
-
SQL文をVBAで流すと「型...
-
ExcelVBAで、ユーザー定義型は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
VBAがブレークモードになっ...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
ADODB.Streamを使用してUTF-8を...
-
VBAでのエラー
-
実行時エラー48発生時のDLL特定...
-
Outlook.ApplicationをCreateOb...
-
VB6+SQL サーバー 2000 で 実行...
-
実行時エラー -'-2147417848
-
「コンパイルエラー:プロシー...
おすすめ情報