Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18704 / 76738 ←次へ | 前へ→

【63472】Re:エラー発生後、次のプロシージャを呼び出さない
回答  でれすけ  - 09/11/9(月) 21:40 -

引用なし
パスワード
   こんにちは。

ひとつの方法ですが

メインの側にもエラー処理ルーチンを設けます。
SUB側のエラー処理ルーチンでは、
・SUB側でエラー処理が完結する場合は処理する
・メイン側で処理を中断する場合は Err.Raise でエラーを再発生させる

というやり方があります。

以下のサンプルでは、オーバーフローの場合はSUB側で処理し、
0除算はメイン側で中断しています。

Sub main()

On Error GoTo Err_Exit

 Call sub1

On Error GoTo 0

Exit Sub

Err_Exit:
 MsgBox Err.Description

End Sub


Sub sub1()
Dim a As Integer, b As Integer, c As Integer

On Error GoTo Err_handler
 a = 2
 b = 2 ^ 14
 c = a * b    ' オーバーフローエラー
 Debug.Print c
 
 a = 2
 b = 0
 c = a / b    ' 0除算のエラー
 Debug.Print c

On Error GoTo 0

Exit Sub

Err_handler:
 Select Case Err.Number
  Case 6 ' オーバーフロー
    b = b / 2
    Resume
  Case Else
    Err.Raise Err.Number
 End Select

End Sub
1 hits

【63464】エラー発生後、次のプロシージャを呼び出さない なみ 09/11/9(月) 9:46 質問
【63465】Re:エラー発生後、次のプロシージャを呼び... Jaka 09/11/9(月) 10:17 発言
【63468】Re:エラー発生後、次のプロシージャを呼び... なみ 09/11/9(月) 11:58 お礼
【63467】Re:エラー発生後、次のプロシージャを呼び... seg 09/11/9(月) 10:59 発言
【63469】Re:エラー発生後、次のプロシージャを呼び... なみ 09/11/9(月) 13:21 お礼
【63470】Re:エラー発生後、次のプロシージャを呼び... seg 09/11/9(月) 13:55 発言
【63472】Re:エラー発生後、次のプロシージャを呼び... でれすけ 09/11/9(月) 21:40 回答
【63479】Re:エラー発生後、次のプロシージャを呼び... seg 09/11/10(火) 9:28 発言

18704 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free