よくある業務エラー対策
Excel VBAを業務で使うと、よくあるエラーに遭遇します。
初心者がつまずきやすい典型的なエラーと、その対策を「逆引き集」形式でまとめました。
コード例やテンプレートを交えて、かみ砕いて説明します。
1. シートが存在しないエラー
よくある場面
Worksheets("Report").Activate ' Reportシートが存在しないとエラー
VB対策テンプレ
Sub SafeActivateSheet()
Dim ws As Worksheet
On Error Resume Next
Set ws = Worksheets("Report")
On Error GoTo 0
If ws Is Nothing Then
MsgBox "Reportシートが存在しません。"
Else
ws.Activate
End If
End Sub
VB- ポイント:
On Error Resume Nextで一時的にエラーを無視。If ws Is Nothingで存在チェック。
2. ファイルが存在しないエラー
よくある場面
Workbooks.Open "C:\data\report.xlsx" ' ファイルが無いとエラー
VB対策テンプレ
Sub SafeOpenFile()
Dim path As String
path = "C:\data\report.xlsx"
If Dir(path) = "" Then
MsgBox "ファイルが存在しません: " & path
Else
Workbooks.Open path
End If
End Sub
VB- ポイント:
Dir(path)で存在チェック。- 無ければメッセージを出して止める。
3. 数値変換エラー(文字列を数値に変換できない)
よくある場面
Dim x As Long
x = CLng("ABC") ' 数値に変換できずエラー
VB対策テンプレ
Sub SafeConvert()
Dim val As String
val = "ABC"
If IsNumeric(val) Then
MsgBox "数値変換成功: " & CLng(val)
Else
MsgBox "数値に変換できません: " & val
End If
End Sub
VB- ポイント:
IsNumericで数値かどうか判定。- 変換できない場合は処理を分ける。
4. ゼロ除算エラー
よくある場面
Dim x As Double
x = 10 / 0 ' ゼロ除算でエラー
VB対策テンプレ
Sub SafeDivide()
Dim a As Double, b As Double
a = 10: b = 0
If b = 0 Then
MsgBox "ゼロ除算はできません。"
Else
MsgBox "結果: " & a / b
End If
End Sub
VB- ポイント:
- 割る数がゼロかどうかを事前チェック。
5. 空セル参照エラー
よくある場面
Dim x As Double
x = Worksheets("Data").Range("A1").Value ' 空セルだと型変換エラー
VB対策テンプレ
Sub SafeCellRead()
Dim val As Variant
val = Worksheets("Data").Range("A1").Value
If IsEmpty(val) Or val = "" Then
MsgBox "セルが空です。"
Else
MsgBox "セルの値: " & val
End If
End Sub
VB- ポイント:
IsEmptyや=""で空セルを判定。
6. 配列の範囲外アクセス
よくある場面
Dim arr(1 To 3) As Long
Debug.Print arr(4) ' 範囲外でエラー
VB対策テンプレ
Sub SafeArrayAccess()
Dim arr(1 To 3) As Long
Dim i As Integer
i = 4
If i < LBound(arr) Or i > UBound(arr) Then
MsgBox "配列の範囲外です。"
Else
MsgBox "値: " & arr(i)
End If
End Sub
VB- ポイント:
LBoundとUBoundで範囲チェック。
例題で練習
'例1:存在しないシートを参照 → 安全にチェック
'例2:ファイルが無い場合 → メッセージ表示
'例3:文字列を数値に変換 → IsNumericで判定
'例4:ゼロ除算 → 割る数を事前チェック
'例5:空セル参照 → IsEmptyで判定
'例6:配列範囲外 → LBound/UBoundでチェック
VB初心者向けポイント
- 「事前チェック」+「エラー処理」で安全にする
- よくある業務エラーは定型パターンで防げる
- Err.Number / Err.Description を組み合わせるとさらに便利
- ログに残すと後から調査が楽
👉 この「よくある業務エラー対策テンプレ」を覚えておけば、Excel VBAで 業務で頻発する典型的なエラーを事前に防ぎ、安全に処理を続ける仕組み を簡単に作成できます。
