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

VBAのIf文の使い方を完全ガイド!初心者でもわかる条件分岐

Excel VBAの条件分岐If文の書き方!ElseIf・Select Caseの使い分けを詳しく解説
Excel VBAの条件分岐If文の書き方!ElseIf・Select Caseの使い分けを詳しく解説

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

生徒

「VBAで条件によって処理を分岐する方法ってありますか?」

先生

「もちろんありますよ。VBAでは If 文を使うことで、条件に応じて処理を切り替えることができます。」

生徒

「どんなふうに使うんですか?」

先生

「それでは、基本的な書き方を一緒に見ていきましょう!」

1. If文とは?

1. If文とは?
1. If文とは?

VBAの If 文は、プログラムの中で条件に応じて処理を分岐させるために使います。例えば、ある条件が「True(真)」だった場合に特定の処理を実行し、条件が満たされなければ別の処理を行う、ということが簡単にできます。条件分岐を理解すると、プログラムの流れを柔軟にコントロールできるようになり、Excelの自動化がぐっと便利になります。

日常生活で例えると、「もし雨が降っていたら傘を持っていく、そうでなければ手ぶらでいく」という判断をプログラムに行わせるのがこの If 文の役割です。プログラミング未経験の方でも、この「もしも〜なら」という考え方さえ分かれば、すぐにマスターできますよ!

[Image of If-Else logic flow diagram]

2. 基本のIf〜Then〜Elseの書き方

2. 基本のIf〜Then〜Elseの書き方
2. 基本のIf〜Then〜Elseの書き方

最も基本的な条件分岐は、「もし〜ならAをする、そうでなければBをする」という形です。VBAでは以下のようなルールで記述します。英語の文章に近い形なので、意味を考えながら書くと覚えやすいですよ。

  • If(イフ):「もしも」という意味です。この後に条件を書きます。
  • Then(ゼン):「その時は」という意味です。条件が正しいときに実行する命令を書きます。
  • Else(エルス):「それ以外」という意味です。条件が違ったときに実行する命令を書きます。
  • End If(エンド・イフ):「条件分岐はここで終わり」という印です。

Sub CheckPoint()
    Dim score As Integer
    score = 45
    
    ' もしスコアが50以上なら「合格」、そうでなければ「不合格」を表示
    If score >= 50 Then
        MsgBox "合格です!"
    Else
        MsgBox "不合格です。"
    End If
End Sub

上記のコードを実行すると、変数 score の中身が 45 なので、条件「50以上」を満たしません。そのため、Else の方の命令が動き、メッセージが表示されます。


不合格です。

3. たくさんの条件を分けるElseIfの使い方

3. たくさんの条件を分けるElseIfの使い方
3. たくさんの条件を分けるElseIfの使い方

「合格か不合格か」の2択ではなく、「80点以上なら大変良い、50点以上なら良い、それ以外は頑張りましょう」といったように、3つ以上の分かれ道を作りたいこともありますよね。そんな時に使うのが ElseIf(エルスイフ) です。

ElseIf を使うと、上から順番に条件をチェックしていき、最初に当てはまった場所の処理だけを実行します。どれにも当てはまらなかった場合、最後に Else があればその処理が行われます。


Sub MultiCondition()
    Dim temperature As Integer
    temperature = 28
    
    If temperature >= 30 Then
        MsgBox "今日は猛暑日です。"
    ElseIf temperature >= 25 Then
        MsgBox "今日は夏日です。"
    Else
        MsgBox "過ごしやすい気温です。"
    End If
End Sub

このプログラムでは、まず「30以上か?」を調べます。28なのでハズレです。次に「25以上か?」を調べます。これは当たりなので、「今日は夏日です」と表示して終わります。このように、複数の分かれ道をスッキリ書くことができます。

4. スッキリ書けるSelect Case文とは?

4. スッキリ書けるSelect Case文とは?
4. スッキリ書けるSelect Case文とは?

条件分岐が非常に多くなると、ElseIf を何度も書くのが大変になり、コードが見づらくなってしまいます。そんな時に便利なのが Select Case(セレクト・ケース) 文です。

Select Case は、一つの変数の値に注目して、「それがAの時」「Bの時」とケースを分けて書く方法です。特に、決まった値(例えば曜日や月、ランクなど)で分岐させる時にとても読みやすいプログラムになります。


Sub RankCheck()
    Dim rank As String
    rank = "B"
    
    ' 変数rankの値で分岐させる
    Select Case rank
        Case "A"
            MsgBox "素晴らしい成績です!"
        Case "B"
            MsgBox "平均的な成績です。"
        Case "C"
            MsgBox "もっと練習が必要です。"
        Case Else
            MsgBox "判定不能です。"
    End Select
End Sub

Case ElseIf 文で言う Else と同じで、「どのケースにも当てはまらない時」の処理になります。End Select で閉じるのを忘れないようにしましょう。

5. If文とSelect Case文の賢い使い分け

5. If文とSelect Case文の賢い使い分け
5. If文とSelect Case文の賢い使い分け

どちらも「条件分岐」をするための命令ですが、どちらを使うべきか迷うことがありますよね。プロの現場では、以下のように使い分けるのが一般的です。

If文が向いているとき
  • 「○歳以上かつ○歳未満」のような範囲を指定する条件
  • 「AかつB」「AまたはB」のように複雑な組み合わせがある時
  • 条件が2つか3つ程度の単純な時
Select Case文が向いているとき
  • 一つの変数が「1、2、3…」と変化するのを見たい時
  • 分かれ道が5つも6つもあるような時
  • 「ランクA、B、C」のように特定の値と一致するか調べたい時

基本的にはどちらで書いても正しく動きますが、「後で自分や他人が読んだときに分かりやすいか」という基準で選ぶのが、VBA上達の秘訣です。

6. 比較演算子をマスターしよう

6. 比較演算子をマスターしよう
6. 比較演算子をマスターしよう

条件を書くときには、記号を使って大きさを比べます。これを「比較演算子(ひかくえんざんし)」と呼びます。普段算数で使う記号と少し違うものもあるので、整理しておきましょう。

記号 意味 例(もしAが5なら)
= 等しい A = 5 (正しい)
<> 等しくない A <> 10 (正しい)
> より大きい A > 5 (間違い、5は含まない)
>= 以上(等しいか大きい) A >= 5 (正しい、5も含む)

特に「等しくない」を表す <> は、VBA特有の書き方なので覚えておきましょう。「小なり」と「大なり」を背中合わせにした形で、「どちらでもない=一致しない」という意味になります。

7. 条件の中に条件を入れる「ネスト」の注意点

7. 条件の中に条件を入れる「ネスト」の注意点
7. 条件の中に条件を入れる「ネスト」の注意点

プログラミングをしていると、「もし男性なら、さらに、もし20歳以上なら」というように、 If 文の中にさらに If 文を入れたくなることがあります。これをネスト(入れ子)と呼びます。

ネストはとても強力ですが、やりすぎると迷路のように複雑になってしまいます。初心者のうちは、2段階くらいまでに留めておくのがコツです。コードを書くときは必ず「インデント(段落)」をつけて、どこからどこまでが一つの塊か分かりやすくしましょう。


Sub NestedIf()
    Dim isMember As Boolean
    Dim hasCoupon As Boolean
    isMember = True
    hasCoupon = True
    
    If isMember = True Then
        ' 会員だった場合のさらに詳しい条件
        If hasCoupon = True Then
            MsgBox "会員特典とクーポンで20%オフです!"
        Else
            MsgBox "会員特典で10%オフです。"
        End If
    Else
        MsgBox "通常料金になります。"
    End If
End Sub

このように字下げ(インデント)を行うことで、プログラムの構造がひと目でわかるようになります。VBE(マクロを書く画面)で「Tabキー」を押すと簡単に字下げができますよ。

8. エラーを防ぐ!条件分岐を書く時のコツ

8. エラーを防ぐ!条件分岐を書く時のコツ
8. エラーを防ぐ!条件分岐を書く時のコツ

マクロが動かない原因の多くは、単純な書き間違いです。条件分岐をミスなく書くためのアドバイスを3つお伝えします。

1. End Ifを先に書く: If と書いたら、中身を書く前にまず End If を書いてしまいましょう。後で書こうとすると、ついつい忘れがちになります。

2. 文字の比較は正確に: If name = "田中" のように文字を比べる時は、一文字でも違う(例えばスペースが入っているなど)と別物と判断されてしまいます。エクセルシート上のデータに余計な空白がないか確認しましょう。

3. 数値の型を合わせる: 数字を比べる時は、変数の型を IntegerLong に正しく設定しておきましょう。型がバラバラだと、意図しない判定結果になることがあります。

9. 条件分岐ができるとマクロが劇的に進化する

9. 条件分岐ができるとマクロが劇的に進化する
9. 条件分岐ができるとマクロが劇的に進化する

ここまでの内容で、 If 文、 ElseIfSelect Case の基本はバッチリです!条件分岐ができるようになると、ただ順番に動くだけのマクロから、状況を自分で判断して賢く動くマクロへと進化します。

例えば、「在庫が少なくなったら自動でメールを送る」「土日祝日だけ背景色を変える」「特定の部署のデータだけ別シートにコピーする」といった複雑な自動化も、すべてこの条件分岐が土台になっています。まずは簡単な 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
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
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
Excel VBA
Excel VBAプロジェクト構成とモジュール管理を完全解説!初心者でも迷わない基本の考え方