エラー処理について
エラー処理の目的
プログラムの安定性向上: エラーが発生しても、プログラムが強制終了せずに、処理を継続したり、エラー内容を表示したりすることができます。
ユーザーへの分かりやすいメッセージ表示: エラーが発生した場合、ユーザーに分かりやすいメッセージを表示することで、原因究明や対応を促すことができます。
デバッグの効率化: エラー発生時の状況を詳細に記録することで、デバッグ作業を効率的に行うことができます。
エラー処理の方法
Excel VBA では、主に以下の方法でエラー処理を行います。
On Error ステートメント
On Error GoTo ラベル名: エラーが発生すると、指定したラベルにジャンプします。
On Error Resume Next: 次のステートメントから処理を再開します。
On Error GoTo 0: エラー処理を無効にします。
VB.Net
Sub Sample()
On Error GoTo ErrHandler
' エラーが発生する可能性のある処理
' ...
Exit Sub
ErrHandler:
MsgBox "エラーが発生しました。"
' エラー処理
End Sub
コードは注意してご使用ください。エラーオブジェクト
Errオブジェクト: エラーに関する情報を取得できます。
Err.Number: エラー番号
Err.Description: エラーの説明
Err.Source: エラーが発生したオブジェクト
Err.Line: エラーが発生した行
VB.Net
Sub Sample()
On Error GoTo ErrHandler
' エラーが発生する可能性のある処理
' ...
Exit Sub
ErrHandler:
MsgBox "エラーが発生しました。" & vbNewLine & _
"エラー番号:" & Err.Number & vbNewLine & _
"エラーの説明:" & Err.Description
' エラー処理
End Sub
コードは注意してご使用ください。
よくあるエラーの種類と対処法
型ミスマッチ: データの型が一致しない場合
変数の型を正しく宣言する
変換関数 (CInt, CStr など) を使用して型を変換する
オブジェクトが設定されていません: オブジェクトが未定義の場合
オブジェクトを作成する
オブジェクトが有効かどうかをチェックする
実行時エラー '1004': メソッドまたはデータメンバーが見つかりません: メソッドやプロパティが存在しない場合
オブジェクトのメソッドやプロパティ名を正しく記述する
オブジェクトの型を確認する
除算エラー: 0 で除算しようとした場合
除算を行う前に、除数 (分母) が 0 でないことを確認する
具体的なエラー処理の例
ファイルの入出力: ファイルが存在しない場合、アクセス権がない場合などのエラーを処理する。
ワークシート操作: 指定したシートが存在しない場合、セル範囲が不正な場合などのエラーを処理する。
データベース操作: データベース接続エラー、SQL文のエラーなどのエラーを処理する。
ユーザー入力: ユーザーが入力した値が不正な場合のエラーを処理する。
注意点
すべてのエラーをキャッチできない: 予期せぬエラーが発生する可能性は常にあります。
エラー処理が複雑になりすぎない: エラー処理が複雑になると、コードの見通しが悪くなり、新たなバグの原因となる可能性があります。
エラー処理の粒度: どのレベルでエラー処理を行うか、適切な粒度を設定する必要があります。
まとめ
Excel VBA のエラー処理は、プログラムの安定性と信頼性を高めるために不可欠です。
エラーの種類や発生状況に応じて、適切なエラー処理を行うことで、より robust なプログラムを作成することができます。
この記事が気に入ったらサポートをしてみませんか?