カテゴリ: Excel VBA 更新日: 2026/02/18

Excel VBAの条件分岐でエラーが出る原因と対処法を完全解説!初心者でも安心して直せる考え方

Excel VBAのエラーが出る条件分岐のよくある原因と対処法まとめ
Excel VBAのエラーが出る条件分岐のよくある原因と対処法まとめ

先生と生徒の会話形式で理解しよう

生徒

「Excel VBAでIf文を書いたら、突然エラーが出て止まってしまいました。何が悪いのか全然分かりません……」

先生

「条件分岐の書き方でエラーが出るのは、初心者の方が必ず通る道ですよ。原因にはいくつか決まったパターンがあります」

生徒

「パソコン操作も苦手なんですが、それでも直せますか?」

先生

「大丈夫です。エラーは故障ではなく、VBAからの合図です。一つずつ原因と対処法を見ていきましょう」

1. Excel VBAの条件分岐とは?エラーが起きやすい理由

1. Excel VBAの条件分岐とは?エラーが起きやすい理由
1. Excel VBAの条件分岐とは?エラーが起きやすい理由

Excel VBAの If文Select Case は、条件によって処理を変えるための仕組みです。 条件分岐とは、「もし〇〇なら△△をする」という判断のことです。 日常生活で言えば、「雨なら傘を持つ」「寒ければ上着を着る」といった判断と同じです。

条件分岐は便利ですが、判断の材料が間違っていると、エラーが発生します。 Excel VBAはとても正直なので、少しのミスでも「分からない」とエラーで知らせてきます。 これが、初心者が条件分岐でつまずきやすい理由です。

2. 空白セルを考慮していないことによるエラー

2. 空白セルを考慮していないことによるエラー
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. 数字と文字を比較してしまうエラー

3. 数字と文字を比較してしまうエラー
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. 変数の型が合っていないことによるエラー

4. 変数の型が合っていないことによるエラー
4. 変数の型が合っていないことによるエラー

VBAでは 変数 という箱に値を入れて使います。 変数には「数字専用」「文字専用」などの種類があります。 これを と呼びます。


Dim age As Integer
age = "二十歳"

この場合、数字専用の箱に文字を入れようとしているため、エラーになります。 初心者のうちは、どんな値が入るかを意識することが大切です。

5. If文の書き忘れ・閉じ忘れによるエラー

5. If文の書き忘れ・閉じ忘れによるエラー
5. If文の書き忘れ・閉じ忘れによるエラー

条件分岐のエラーで意外と多いのが、End If の書き忘れです。 VBAは、Ifの終わりが分からないと処理を続けられません。


If Range("A1").Value = 1 Then
    MsgBox "1です"

このコードは、End Ifがないためエラーになります。 If文を書いたら、必ず終わりがあることを意識しましょう。

6. 条件の書き方が間違っているケース

6. 条件の書き方が間違っているケース
6. 条件の書き方が間違っているケース

条件分岐では、「=」と「==」のような他の言語の癖が混ざることがあります。 Excel VBAでは、比較には「=」を使います。


If Range("A1").Value == 1 Then
    MsgBox "1です"
End If

この書き方はVBAではエラーになります。 正しい比較の書き方を覚えておくことが大切です。

7. エラーを怖がらず原因を探す考え方

7. エラーを怖がらず原因を探す考え方
7. エラーを怖がらず原因を探す考え方

Excel VBAのエラーは、プログラムが壊れたわけではありません。 「ここが分からない」と教えてくれているだけです。 エラーが出た行を確認し、「どんな値が入っているか」を考えることで、原因は必ず見えてきます。

条件分岐のエラーは、空白、型、比較の三点を確認するだけでも、大きく減らせます。 プログラミング未経験の方でも、落ち着いて一つずつ見直せば、必ず対処できます。

8. Excel VBA初心者が条件分岐で失敗しないための意識

8. Excel VBA初心者が条件分岐で失敗しないための意識
8. Excel VBA初心者が条件分岐で失敗しないための意識

条件分岐を書くときは、「想定外の値が来たらどうなるか」を考えることが大切です。 空白、文字、数字以外の状態を意識するだけで、エラーは大幅に減ります。

Excel VBAの基本文法であるIf文は、正しく使えばとても強力な道具です。 エラーの原因と対処法を知っておくことで、自動化作業も安心して進められるようになります。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.4
Java&Spring記事人気No4
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法