皆さん、Excel VBAを使っていて、突然「実行時エラー」のメッセージが表示されて驚いた経験はありませんか?今回は、そんなエラーが発生した際に、プログラムを安全に続行させるための「エラーハンドリング」について、初心者の方にもわかりやすく解説します。
エラーハンドリングとは?
エラーハンドリングとは、プログラムが予期しない問題(エラー)に直面したときに、適切に対処してプログラムの停止やデータの損失を防ぐための方法です。例えば、存在しないシートを選択しようとしたり、0で割り算をしようとするとエラーが発生します。これらのエラーに対処せず放置すると、プログラムが途中で止まってしまうことがあります。
VBAでの基本的なエラーハンドリング方法
VBAでは、エラーハンドリングを行うために「On Error」ステートメントを使用します。主な使い方は以下の3つです。
1. On Error GoTo [ラベル名]
エラーが発生した際に、指定したラベル位置に処理を移す方法です。
vba
Sub Sample1()
On Error GoTo ErrorHandler
' エラーが発生する可能性のあるコード
Dim result As Integer
result = 10 / 0 ' ここでエラーが発生します
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
End Sub
この例では、0で割り算を試みてエラーが発生すると、「ErrorHandler」というラベルにジャンプし、エラーメッセージが表示されます。
2. On Error Resume Next
エラーが発生しても、次の行から処理を続行する方法です。
vba
Sub Sample2()
On Error Resume Next
Dim ws As Worksheet
Set ws = Worksheets("存在しないシート")
If Err.Number <> 0 Then
MsgBox "シートが見つかりませんでした。"
Err.Clear
Else
ws.Activate
End If
End Sub
この例では、存在しないシートを参照しようとするとエラーが発生しますが、エラー後も次の行から処理を続け、エラーが発生した場合にはメッセージを表示します。
3. On Error GoTo 0
エラーハンドリングを無効にする方法です。これを使用すると、エラーが発生した際に通常のエラーメッセージが表示され、プログラムが停止します。
vba
Sub Sample3()
On Error GoTo ErrorHandler
' エラーが発生する可能性のあるコード
Dim result As Integer
result = 10 / 0 ' ここでエラーが発生します
On Error GoTo 0 ' エラーハンドリングを無効にします
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
Resume Next
End Sub
この例では、エラーが発生すると「ErrorHandler」にジャンプし、エラーメッセージを表示した後、次の行から処理を再開します。
このサイトをチップで応援
エラーハンドリングの実践例
実際の業務で役立つエラーハンドリングの例を見てみましょう。
ファイルを開く際のエラーハンドリング
vba
Sub OpenWorkbook()
On Error GoTo ErrorHandler
Dim wb As Workbook
Set wb = Workbooks.Open("C:存在しないファイル.xlsx")
' ファイルが正常に開けた場合の処理
Exit Sub
ErrorHandler:
MsgBox "ファイルを開くことができませんでした: " & Err.Description
End Sub
この例では、指定したファイルが存在しない場合にエラーが発生し、エラーメッセージを表示します。
よくある質問や疑問
Q1. エラーハンドリングを使わないとどうなりますか?
エラーハンドリングを使用しない場合、エラーが発生すると以下のような「実行時エラー」のメッセージが表示され、プログラムが停止します。これにより、業務の効率が低下したり、データが正しく処理されないリスクがあります。
Q2. On Error Resume Nextは便利そうですが、注意点はありますか?
はい、On Error Resume Nextはエラーを無視して次の行に進むため、エラーが発生しても気づかずに処理が進行し、後で問題が大きくなる可能性があります。使用する際は、必ずエラーが発生したかどうかを確認し、適切な対処を行うようにしましょう。
まとめ
エラーハンドリングは、VBAプログラムを安全かつ安定的に動作させるために欠かせない技術です。今回ご紹介した基本的な方法を活用して、エラーに強いプログラムを作成してみてください。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。



コメント