Error.Raiseを行うと呼び出し元の関数にエラーを挙げることが出来る。
独自エラーを作る時は以下のように、エラー番号を定義し、
Error.Raiseすると良い。
/*エラー番号を定義*/
Const originalError1 = 1 + vbObjectError + 512 '512はVBAで標準で予約されているエラー数
Const originalError2 = 2 + vbObjectError + 512
Const originalError3 = 3 + vbObjectError + 512
/*エラーをスローする関数を呼び出す関数*/
Sub parent()
On Error Goto errorHandler
Call child()
Exit Sub
errorHandler
Select Case Err.Number
Case originalError1
Case originalError2
Case originalError3
End Select
End Sub
Sub child()
If 条件 then Err.Raise originalError3 '末端関数以外の所の処理のエラーは直接Raiseするのも手。
Call grandChild() 'エラーをスローしない、キャッチしない関数ではOn Errorを宣言しない
End Sub
/*エラーをスローする関数*/
Sub grandChild()
On Error Goto errorHandler
'何らかの処理
If xxx = True then goto xxxHandler
exit Sub
errorHandler:
On Error Goto 0 'grandChild内のerrorHandlerループを防ぐ
Err.Raise originalError1
exit Sub
xxxHandler:
On Error Goto 0
Err.Raise originalError2
End Sub
最終更新:2016年03月20日 21:15