Errorの概要
任意のエラーを発生させ、エラーハンドリングをテストする VBAの予約語 | ||
Error 概要 Error ステートメントは、VBAで任意のエラーを発生させるために使用されます。主にエラーハンドリングのテストや、特定の条件下でエラーを発生させたい場合に利用されます。 わかりやすく説明 指定したエラー番号を強制的に発生させる命令。 |
||
|
Errorを使ってエラーを発生させる
以下の例では、Error によってエラーを発生させます。
Sub TestError()
On Error Resume Next ' エラーが発生しても続行
Error 11 ' エラー11(ゼロ除算エラー)を発生
If Err.Number <> 0 Then
MsgBox "エラー発生: " & Err.Number & " - " & Err.Description
End If
End Sub
解説:
Error 11
でエラー番号11(ゼロ除算エラー)を発生させる。Err.Number
で発生したエラーの番号を取得。On Error Resume Next
により、エラーが発生してもプログラムが継続。
Errorを使ったカスタムエラーハンドリング
以下の例では、Error を使ってエラーハンドリングをテストします。
Sub CustomErrorHandling()
On Error GoTo ErrorHandler ' エラー時に ErrorHandler にジャンプ
' エラーを発生させる
Error 53 ' ファイル未検出エラー
Exit Sub ' 正常終了時はエラーハンドラを通らない
ErrorHandler:
MsgBox "エラー発生: " & Err.Number & " - " & Err.Description
Resume Next ' 次の行から実行を再開
End Sub
解説:
On Error GoTo ErrorHandler
でエラー時にエラーハンドラへジャンプ。Error 53
で「ファイル未検出エラー」を発生。Resume Next
で次の行から処理を継続。
Excel VBAでのErrorの活用
以下の例では、Excelのシート操作でエラーを強制発生させ、処理を確認します。
Sub TestExcelError()
On Error Resume Next
Dim ws As Worksheet
' 存在しないシートを選択しようとしてエラーを発生
Set ws = ThisWorkbook.Sheets("NonExistentSheet")
' エラーを発生させる
If ws Is Nothing Then
Error 1004 ' Excelの実行時エラー
End If
If Err.Number <> 0 Then
MsgBox "エラー発生: " & Err.Number & " - " & Err.Description
End If
End Sub
解説:
- 存在しないシートを参照しようとするとエラーが発生。
- エラーが発生したら
Error 1004
を使って強制的にエラーを発生させる。 - 発生したエラーを
MsgBox
で表示。
Errorの注意事項
- 実際に発生するエラーと同じ動作をするわけではない: Error ステートメントはエラー番号を設定するだけで、実際のエラーの詳細な情報は Err オブジェクトに依存する。
- デバッグ目的での使用が推奨: 実際のプログラムでは
Err.Raise
の方が適切なケースが多い。 - Resume や Resume Next を使って適切に処理する: エラー発生後の動作を明確にしておく。
よくある質問
- Q: Error と Err.Raise の違いは?
- A:
Error
は単にエラー番号を設定するだけで、Err.Raise
は実際にエラーを発生させる。 - Q: Error を使うメリットは?
- A: エラーハンドリングの動作確認やテストに役立つ。
- Q: Error を使うべきケースは?
- A: 実際のエラーハンドリングでは
Err.Raise
を使い、Error
はデバッグや学習用として使う。
まとめ
- Error ステートメントは、指定したエラー番号を強制的に発生させる。
- エラーハンドリングのテストやデバッグに役立つ。
- Excel VBAでエラー処理の挙動を確認する際に使用できる。
- 実際のエラーハンドリングには
Err.Raise
を推奨。