Excel VBA On Error ステートメントは、VBAコードでエラーが発生したときにどのように処理するかを指定します。エラー処理を実装することで、コードがエラーで中断するのを防ぎ、エラーに対する適切な対応を取ることができます。具体的な使い方や、注意点やサンプルコードを紹介します。
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
以下のようなシーンで利用されます。
・予期しないエラーが発生する可能性がある場合にコードを安全に実行する
・エラーメッセージを表示し、ユーザーに問題を知らせる
・特定のエラーが発生したときに特定の処理を行う
・エラー発生時にクリーンアップ処理を実行する
1. On Error Resume Next
エラーが発生しても無視し、次の行から処理を続行します。
2. On Error GoTo ラベル
エラーが発生したら指定したラベルにジャンプし、エラー処理を実行します。
3. On Error GoTo 0
これまでのエラー処理を無効にし、標準のエラー処理に戻します。
・On Error Resume Next を使用する場合、エラーを無視するため後続のコードが正しく実行されているかを必ず確認する必要があります。
・適切なエラー処理を行わないと、後のコードで予期せぬ動作が発生する可能性があります。
Option Explicit
Sub ExampleResumeNext()
Dim result As Double
On Error Resume Next ' エラーを無視し次の行に進む
result = 1 / 0 ' ここでエラーが発生するが無視される
If Err.Number <> 0 Then
MsgBox "エラーが発生しました: " & Err.Description
Err.Clear ' エラー情報をクリア
Else
MsgBox "結果: " & result
End If
On Error GoTo 0 ' エラー処理を標準に戻す
End Sub
Option Explicit
Sub ExampleGoTo()
Dim result As Double
On Error GoTo ErrorHandler ' エラーが発生したらErrorHandlerにジャンプ
result = 1 / 0 ' ここでエラーが発生する
MsgBox "結果: " & result
Exit Sub ' エラーがなければ正常終了
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
' 必要に応じてクリーンアップ処理
Err.Clear ' エラー情報をクリア
End Sub
これらの例を使って、エラーが発生した際の挙動を制御し、プログラムの安定性を向上させることができます。
On Error ステートメントを適切に使用することで、ユーザーにとってより使いやすいエラーハンドリングを実現できます。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。