Excel VBAでのエラーハンドリング入門【初心者向け解決ガイド】

パソコンパソコン・スマホ教室
スポンサーリンク

皆さん、Excel VBAを使っていて、突然「実行時エラー」のメッセージが表示されて驚いた経験はありませんか?今回は、そんなエラーが発生した際に、プログラムを安全に続行させるための「エラーハンドリング」について、初心者の方にもわかりやすく解説します。

スポンサーリンク

エラーハンドリングとは?

Excelのイメージ

Excelのイメージ

エラーハンドリングとは、プログラムが予期しない問題(エラー)に直面したときに、適切に対処してプログラムの停止やデータの損失を防ぐための方法です。例えば、存在しないシートを選択しようとしたり、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はエラーを無視して次の行に進むため、エラーが発生しても気づかずに処理が進行し、後で問題が大きくなる可能性があります。使用する際は、必ずエラーが発生したかどうかを確認し、適切な対処を行うようにしましょう。

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

エラーハンドリングは、VBAプログラムを安全かつ安定的に動作させるために欠かせない技術です。今回ご紹介した基本的な方法を活用して、エラーに強いプログラムを作成してみてください。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました