アトム電器 三軒家店(有限会社 おかもとでんか)のホームページ。大阪市大正区にある町の電気屋さん。家電製品の販売、エアコン、電気工事、パソコンからリフォーム、オール電化など電気のことならなんでもお任せ下さい!アトム電器三軒家店

VBAでのエラー処理でよく使う定型構造

VBA開発

VBAのエラー処理は、Javaなどで使われるTry ~ Catchが使えないので、それに似せて確実にエラー処理が行えるようにする構造にして開発するようにしています。

Public Sub Test()
On Error GoTo Catch

'' ここにエラーが発生する可能性のあるコードを記述

Finally:
'' ここにオブジェクトの破棄処理などを記述
Exit Function
Catch:
'' ここにエラー処理を記述
GoTo Finally
End Sub

On Error Goto Catchでこれ以降でエラーが発生した場合は、Catchラベルに飛ぶようにしています。エラー処理はCatchラベル部で一括して記述します。エラー処理後にGoTo FinallyによってFinallyラベルへ移動します。このFinally部にオブジェクトの破棄処理を記述することで安全にかつ確実に破棄することができます。

エラーが発生しない場合は、Finallyラベルの最後に書かれているExit Functionによって関数から脱出するので、エラー処理を行うCatch部分は実行されません。