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

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 文から、どんどん自分のマクロに取り入れてみてくださいね。

まとめ

まとめ
まとめ

VBAのIf文を使いこなして条件分岐をマスターしよう

VBAのIf文は、プログラムの流れを自在にコントロールするための最も基本でありながら非常に重要な機能です。条件分岐を理解することで、単純な処理しかできなかったマクロが、状況に応じて判断しながら動作する実用的なツールへと進化します。今回解説したIf文、ElseIf、Select Caseの考え方をしっかり身につけることで、Excel VBAの開発効率は大きく向上します。

特にIf文は「もし〜なら」という日常的な思考をそのままコードに落とし込めるため、プログラミング初心者でも理解しやすい特徴があります。条件分岐の基本として、TrueとFalseの概念をしっかり理解することが重要です。また、比較演算子を正しく使うことで、数値や文字列の判定を正確に行えるようになります。

複数の条件を扱う場合にはElseIfを使うことで、より細かい分岐が可能になります。一方で、条件が増えすぎるとコードが読みにくくなるため、そのような場合にはSelect Case文を活用すると、より整理された見やすいコードを書くことができます。用途に応じてIf文とSelect Case文を使い分けることが、読みやすく保守性の高いプログラムを作るコツです。

また、ネスト(入れ子)構造を使うことで、より複雑な条件分岐も実現できますが、深くなりすぎると可読性が低下します。そのため、インデントを意識して構造を明確にし、できるだけシンプルにまとめることが大切です。プログラムは自分だけでなく他人も読む可能性があるため、誰が見ても理解しやすいコードを書く意識を持ちましょう。

実務では、在庫管理や顧客データの分類、売上分析、入力チェックなど、さまざまな場面で条件分岐が活用されています。例えば「特定の条件を満たした場合のみ処理を実行する」「条件によって処理内容を変える」といった処理は、すべてIf文をベースに構築されています。VBAで業務効率化を目指すなら、条件分岐は避けて通れない重要なスキルです。

今回の内容を踏まえて、まずは簡単な条件分岐から実際にコードを書いて試してみてください。実際に手を動かすことで理解が深まり、応用力も身についていきます。最初はシンプルなIf文から始めて、徐々にElseIfやSelect Caseを組み合わせていくことで、より高度なマクロを作成できるようになるでしょう。

サンプルプログラム(総復習)


Sub FinalCheck()
    Dim score As Integer
    score = 75

    If score >= 80 Then
        MsgBox "とても良い成績です!"
    ElseIf score >= 50 Then
        MsgBox "合格です!"
    Else
        MsgBox "もう少し頑張りましょう。"
    End If
End Sub

合格です!
先生と生徒の振り返り会話

生徒

「If文って、最初は難しそうだと思っていましたが、『もし〜なら』という考え方で理解すると意外とシンプルですね。」

先生

「その通りです。プログラミングは難しく見えても、基本は日常の判断をそのままコードにしているだけなんですよ。」

生徒

「ElseIfを使うと条件を増やせるのも便利ですね。でも増えすぎると見づらくなるのも実感しました。」

先生

「いいところに気づきましたね。そういう時にSelect Caseを使うと、すっきり整理できます。コードは動くだけでなく、読みやすさも大切です。」

生徒

「ネストも使えるけど、深くしすぎない方がいいんですよね?」

先生

「そうです。複雑になりすぎると自分でも分からなくなりますから、できるだけシンプルに書く意識を持ちましょう。」

生徒

「条件分岐ができると、できることが一気に増えそうですね!」

先生

「まさにその通りです。If文はVBAの基礎であり、応用の土台です。しっかり身につけて、実務で活かしていきましょう。」

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで大量行データを高速処理する方法!Excel自動化・セル取得・レンジ操作の最適化テクニック
New2
Excel VBA
VBAの処理速度は遅い?Excel VBAのパフォーマンス事情と改善ポイントまとめ
New3
Excel VBA
Excel VBAでよく使うショートカットキー一覧!開発効率が劇的に上がる操作集
New4
Excel VBA
Excel VBAでセルの値・書式・背景色を自由自在に操作!初心者向け入門ガイド
人気記事
No.1
Java&Spring記事人気No1
Office Scripts
Office Scriptsで別ブックを開いてデータ取得する方法|OneDrive・SharePoint連携でExcel自動化
No.2
Java&Spring記事人気No2
Excel VBA
Excel VBAで列の追加・行の削除を自動化!InsertとDeleteの使い方を初心者向けに徹底解説
No.3
Java&Spring記事人気No3
Office Scripts
Office Scriptsで外部API連携!fetchとBearer Tokenで認証付きAPIを使う方法【Excel自動化×HTTP通信入門】
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAは今後なくなる?将来性と企業での活用状況を詳しく解説
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.6
Java&Spring記事人気No6
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.7
Java&Spring記事人気No7
Excel VBA
VBAのコメントの書き方を完全ガイド!初心者でもわかる説明文の付け方
No.8
Java&Spring記事人気No8
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド