Excel VBAの条件分岐でエラーが出る原因と対処法を完全解説!初心者でも安心して直せる考え方
生徒
「Excel VBAでIf文を書いたら、突然エラーが出て止まってしまいました。何が悪いのか全然分かりません……」
先生
「条件分岐の書き方でエラーが出るのは、初心者の方が必ず通る道ですよ。原因にはいくつか決まったパターンがあります」
生徒
「パソコン操作も苦手なんですが、それでも直せますか?」
先生
「大丈夫です。エラーは故障ではなく、VBAからの合図です。一つずつ原因と対処法を見ていきましょう」
1. Excel VBAの条件分岐とは?エラーが起きやすい理由
Excel VBAの If文 や Select Case は、条件によって処理を変えるための仕組みです。 条件分岐とは、「もし〇〇なら△△をする」という判断のことです。 日常生活で言えば、「雨なら傘を持つ」「寒ければ上着を着る」といった判断と同じです。
条件分岐は便利ですが、判断の材料が間違っていると、エラーが発生します。 Excel VBAはとても正直なので、少しのミスでも「分からない」とエラーで知らせてきます。 これが、初心者が条件分岐でつまずきやすい理由です。
2. 空白セルを考慮していないことによるエラー
Excel VBAの条件分岐で最も多い原因が、「セルが空白なのに処理しようとする」ことです。 人間なら空白を見て判断できますが、VBAは命令がないと止まってしまいます。
If Range("A1").Value > 10 Then
MsgBox "10より大きいです"
End If
A1セルが空白の場合、このコードはエラーになることがあります。 対処法は、先に空白かどうかを確認することです。
If Range("A1").Value <> "" Then
If Range("A1").Value > 10 Then
MsgBox "10より大きいです"
End If
End If
3. 数字と文字を比較してしまうエラー
Excel VBAでは、「数字」と「文字」はまったく別のものとして扱われます。 見た目が同じでも、中身が違うとエラーの原因になります。
If Range("A1").Value >= 5 Then
MsgBox "5以上です"
End If
A1セルに文字が入っていると、この比較はできません。 そこで使うのが IsNumeric です。 これは「数字かどうか」を調べる命令です。
If IsNumeric(Range("A1").Value) Then
If Range("A1").Value >= 5 Then
MsgBox "5以上です"
End If
End If
4. 変数の型が合っていないことによるエラー
VBAでは 変数 という箱に値を入れて使います。 変数には「数字専用」「文字専用」などの種類があります。 これを 型 と呼びます。
Dim age As Integer
age = "二十歳"
この場合、数字専用の箱に文字を入れようとしているため、エラーになります。 初心者のうちは、どんな値が入るかを意識することが大切です。
5. If文の書き忘れ・閉じ忘れによるエラー
条件分岐のエラーで意外と多いのが、End If の書き忘れです。 VBAは、Ifの終わりが分からないと処理を続けられません。
If Range("A1").Value = 1 Then
MsgBox "1です"
このコードは、End Ifがないためエラーになります。 If文を書いたら、必ず終わりがあることを意識しましょう。
6. 条件の書き方が間違っているケース
条件分岐では、「=」と「==」のような他の言語の癖が混ざることがあります。 Excel VBAでは、比較には「=」を使います。
If Range("A1").Value == 1 Then
MsgBox "1です"
End If
この書き方はVBAではエラーになります。 正しい比較の書き方を覚えておくことが大切です。
7. エラーを怖がらず原因を探す考え方
Excel VBAのエラーは、プログラムが壊れたわけではありません。 「ここが分からない」と教えてくれているだけです。 エラーが出た行を確認し、「どんな値が入っているか」を考えることで、原因は必ず見えてきます。
条件分岐のエラーは、空白、型、比較の三点を確認するだけでも、大きく減らせます。 プログラミング未経験の方でも、落ち着いて一つずつ見直せば、必ず対処できます。
8. Excel VBA初心者が条件分岐で失敗しないための意識
条件分岐を書くときは、「想定外の値が来たらどうなるか」を考えることが大切です。 空白、文字、数字以外の状態を意識するだけで、エラーは大幅に減ります。
Excel VBAの基本文法であるIf文は、正しく使えばとても強力な道具です。 エラーの原因と対処法を知っておくことで、自動化作業も安心して進められるようになります。