トップページ > コンテンツ > プログラミング入門 > Excel VBA入門 > VBAエラー処理 > 例外をスローする

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