LoginSignup
0
0

More than 5 years have passed since last update.

On Error GO TOをした後にプログラムを閉じる処理をしたいとき

Last updated at Posted at 2018-09-03

手前味噌ですが…。

まず

ON Error Go To とは…

  • エラー処理ルーチンの開始を示すもの
  • これを記載された処理はエラーが起こると定義したところまでGOTOしますって感じだと思っています。

記載例>

Sub Main OyaHoge()

On Error GoTo OyaHoge_Eroor
    Call KoHoge1()
    Call KoHoge2()

Debug.Print("処理完了したヨ")    
Exit Sub

OyaHoge_Eroor:
 Debug.Print("エラーダヨ")

End Sub

上記のように書けば良いと思っているがどうでしょうか?
このままではOyaHoge()KoHoge1()KoHoge2()の処理の中でエラーが起きるとDebug.Print("エラーダヨ")と記載してMainの処理を完了する。

このままでは、正常処理に記載されている、("処理完了したヨ")が表示しない(処理完了のフラグとかを立てなければいけないときとかも該当する)

エラーのときエラー処理と完了処理を行いたいとき

はどうすれば良いか。

・・・単純にエラー処理の後に完了処理を呼んでしまえば良い!!
つまり以下のようになると思う。

記載例>

Sub Main OyaHoge()
Dim ErrorFlg As Boolean
'ErrorFlag初期化
ErrorFlg = False
On Error GoTo OyaHoge_Eroor
    Call KoHoge1()
    Call KoHoge2()

Hoge_End:
If ErrorFlg = True Then
    Debug.Print("エラーあり")
End If

Debug.Print("処理完了したヨ")    
Exit Sub

Hoge_Eroor:
 Debug.Print("エラーダヨ")
 ErrorFlg = True
 GoTo Hoge_End

End Sub

上記のように再度呼びたい処理をエラー処理の後に呼んでやれば良いと思っている。
正常のときはそのまま完了処理を通して、エラーのときはエラー処理を解してから完了処理(ErrorFlagがTrueなので("エラーあり")のコメント出す)を通す感じです。
なんかエラーのお知らせ重なって気持ち悪い…

動き例>
正常のとき
→OyaHoge()→KoHoge1()→KoHoge2()→"処理完了したヨ"

KoHoge2()でエラーが出たとき
→OyaHoge()→KoHoge1()→KoHoge2()→Hoge_Eroor:→"エラーダヨ"→エラーあり→"処理完了したヨ"

最後に

以下の文言でググッた方が有意義と思います。

  • On Error Go To
  • エラー処理

以上。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0