VBAのIF文で条件分岐をマスターしよう|IF Else文の使い方も解説

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
IF分アイキャッチ

「VBAで条件分岐を使いたいけれど、IF文をどう書けばいいのかわからない…。」
そんな悩みをお持ちではありませんか?


VBAで条件分岐を書きたいけど、どう書けばいいの?

IF文・IF Else文・ElseIfの違いがごちゃごちゃ…

・If文と合わせてAND・OR・Notは、どう使えばいいの?

VBAの条件分岐は、どんな業務自動化でも避けて通れない
基本テクニックです。
でも実は、書き方のルールと使い分け方さえ押さえれば

とてもシンプルに使えるんです。


この記事では、VBAのIF文やIF Else文を使った複雑な条件分岐の方法を詳しく解説します。

初心者の方でも迷わず書けるように、コピペOKのコード例付きで丁寧に解説しています。
実務でよく使うパターンを中心に、「これが知りたかった!」という内容をギュッと詰め込みました。

ぜひ、最後まで読んで「VBAの条件分岐」をマスターしてください!


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

VBAをしっかり学びたいけれど、「どこから始めればいいかわからない…」と迷っていませんか?

そんな方には、UdemyのVBA講座がおすすめです。

  • 動画での丁寧な解説で、自分のペースで学べる
  • 実務ベースのサンプルコードで、すぐに応用できる
  • 繰り返し視聴OKだから、つまずいても安心
多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  今すぐ条件分岐をマスターしたい方はこちら  /

目次

この記事を見て「できるようになる」こと

スポンサーリンク

VBAのIF文とは?|条件分岐の基本をわかりやすく解説

VBAにおける「IF文」は、条件によって処理の流れを変えるための構文です。
これは「条件分岐」とも呼ばれ、Excel VBAで最もよく使われる命令の一つです。

たとえばこんな使い方ができます👇

セルA1の値が100以上なら「合格」、100未満なら「不合格」とB1セルに表示する

このように、IF文を使えば入力値に応じた自動処理を簡単に実現できます。
業務効率化・自動化の第一歩として覚えておきたい構文です。


IF分の動作イメージ

VBAのIF分の記述方法詳細を解説 | 3パターンを解説します。

VBAで条件分岐を行う際は、主に以下の3つのパターンを使い分けます。

スクロールできます
構文の種類 (↓クリックで詳細を見る)説明
If … Then条件が「真」なら処理を実行、それ以外は何もしない。
If … Then … Else条件が「真」ならAの処理、偽ならBの処理を実行。
If … Then … ElseIf … Else複数の条件を評価し、最初に一致した処理を実行。

より詳しい情報は、Microsoft公式 – If…Then…Else ステートメントを使用するを参照してみてください。

If Then文の基本構文とは?|3行&1行記述の使い分け方

VBAの「If Then文」は、最も基本的な条件分岐の書き方です。
指定した条件が「真(True)」の場合のみ処理を実行し、偽(False)のときは何もしません。

If Then文の基本的な書き方 | 3行で記述

IF...then文の基本構成

この構文では、「条件式」が「真」の場合に、Then以下の「真の処理」が実行されます。
条件が「偽」の場合は、何も行われません

■ 基本構文(複数行)
If Range("A1") = 1000 Then
    Range("B1") = Range("A1") * 10
End If
🔍このコードで行っていること
  • 条件式
    • A1の値が「1000」かどうか?
      • 処理内容
        • A1が「1000」なら、B1に「A1 × 10」の値を代入
  • 何もしない場合
    • 条件が偽なら、B1の値は変更されない
💡 ポイント

このように、If文を複数行で記述するのが基本形です。
Thenの直後に書かず、次の行にインデントして処理を書くことで読みやすさも保たれます。

VBA If Then文を1行で書く方法|簡単な条件分岐に最適

VBAでは、簡単な条件であれば1行で書くことも可能です。
短く済ませたいときや、処理が1つしかないときに便利です。


例えば、セルA1の値が10以上である場合に「A1は10以上です」とメッセージを表示するコードは、以下のように1行で書くことができます。

If Range("A1").Value >= 10 Then MsgBox "A1は10以上です"
💡 ポイント

1行で記述する場合は、「真の処理」も1行でないといけません。

If Then文の使い分けの目安

スクロールできます
シチュエーションおすすめの書き方
条件が簡単+処理も1つだけ1行If文
複数の処理を書く/見やすくしたい複数行のIf文

ここまでが、基本の「If Then文」の使い方になります!
では次に、「条件が満たされなかった場合の処理」も記述できる「If Else文」の使い方を見てみましょう。

If Then Else文の基本構文とは?|2つの処理を条件で分ける方法

VBAの「If Else文」は、指定した条件が「真(True)」なら「A」の処理を実行、「偽(False)」の場合には別の処理「B」を実行する条件分岐(if文)の一種です。

たとえば、「数値が1000なら特別処理、そうでなければ通常処理」といったケースに使えます。

If Then Else文の基本構文

使用例

If Range("A1") = 1000 Then
    Range("B1") = Range("A1") * 10
Else
    Range("B1") = Range("A1") * 100
End If
🔍このコードで行っていること
  • 条件式
    • A1の値が「1000」かどうか?
      • 一致する場合
        • A1が「1000」なら、B1に「A1 × 10」の値を代入
  • それ以外(Else)の場合
    • それ以外の場合、B1に「A1 × 100」の値を代入
💡 ポイント

If文では「偽」の場合に何もしない構成が基本でしたが、If Else文なら真でも偽でもどちらかの処理が必ず実行されるのが特徴です。

次は、複数の条件を評価して処理を分けたい場合に便利な「If ElseIf文」について詳しく見ていきましょう!

If Then ElseIf文の使い方|複数の条件を順に評価して処理を分ける方法

VBAで3つ以上の条件を評価したいときに使うのが「If ElseIf文」です。
この構文を使えば、「Aの場合はこれ、Bならこれ、その他はこれ」といった多段階の条件分岐がスッキリ書けます。

If Then ElseIf文の基本構文

使用例

If Range("A1") = 1000 Then
    Range("B1") = Range("A1") * 10
ElseIf Range("A1") = 100 Then
    Range("B1") = Range("A1") * 100
Else
    Range("B1") = Range("A1") * 1000
End If
🔍このコードで行っていること
  • 条件式
    • A1の値が「1000」かどうか?
      • 一致する場合
        • A1が「1000」なら、B1に「A1 × 10」の値を代入
  • 次の条件式
    • A1の値が「100」かどうか?
      • 一致する場合
        • A1が「1000」なら、B1に「A1 × 100」の値を代入
  • それ以外(Else)の場合
    • それ以外の場合、B1に「A1 × 1000」の値を代入

Select Caseとの違いは?

If ElseIf文と似た構文に「Select Case文」があります。
どちらを使ってもよいですが、以下のように使い分けるのがおすすめです

スクロールできます
条件分岐が…おすすめ構文
=(等しい)だけSelect Case
>, <, >=, AND, OR など複雑If ElseIf

Select Case文についてもっと詳しく見たい方は、別記事で解説しているので、是非ご覧ください。

あわせて読みたい
VBA Select Caseで複数の文字列・条件を簡単処理!ワイルドカードや文字列比較の応用例も紹介 「VBAのIF分で複数の条件分岐を行うと、コードが複雑になってよく分からなくなる...」そんな悩みを抱えていませんか? ・複数の条件をIF文で書くと、コードが複雑に...

VBAのIF文を使うときの注意点と書き方のコツ

VBAのIF文は非常に便利な構文ですが、使い方を間違えるとコードが読みにくくなったり、意図しない動作につながることがあります。

ここでは、初心者が特に気をつけたい「2つの注意ポイント」とその対策を紹介します。

注意点①:コードが長くなり、複雑になる

問題点

複数の条件を扱う場合、IF文を連続して書いたり、ネスト(入れ子)させることで、コードが長くなり、見通しが悪くなることがあります。

これにより、後でコードを見直す際に理解しにくくなり、バグが発生しやすくなります。

If A = 1 Then
    If B = 2 Then
        If C = 3 Then
            MsgBox "複雑すぎる…"
        End If
    End If
End If

対策

以下のような工夫で、コードの可読性と保守性をアップできます。

工夫について
  • 共通処理をサブルーチンや関数に分ける
  • Select Case構文を使ってスッキリ分岐する
  • 複雑な条件は一旦変数に置き換えて簡素化する
  • 論理演算子(AND, OR)を適切に使う

注意点②:条件の順序に注意する

問題点

IF文では、条件が上から順に評価されるため、条件の順序を誤ると、意図しない結果になることがあります。
例えば、複数の条件がある場合に、最も一般的な条件を最初に評価しないと、効率が悪くなることがあります。

If x > 10 Then
    '// 処理A
ElseIf x > 1000 Then
    '// 処理B
End If
この動作の問題点

この場合、x = 200 のときにも先に x > 10 を評価してしまうため、処理Bがスキップされてしまう!

対策

IF文を書く際には、最も一般的な条件や、プログラムの目的において重要な条件を先に評価するようにしましょう。

これにより、コードの効率が向上し、誤解を避けることができます。
また、条件の評価順序が重要であることを常に意識し、テストを行うことで正確な動作を確認することが大切です。

スポンサーリンク

VBAのIF分の使用例をご紹介

それでは、IF分の使用例について解説します。

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。

特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

使用例1: 基本的な If 文

基本的な IF End If 文の使用方法を紹介します。

例えば、変数「cellValue」に入力された数値が10以上かどうか?を判定するコードです。

コード例 | 基本的な If 文

Sub CheckValue()
    Dim cellValue As Long
    
    cellValue = 100

    If cellValue >= 10 Then
        MsgBox "A1の値は10以上です"
    End If
End Sub

処理結果

使用例1の結果

コードの動作概要

STEP
変数を宣言

変数「cellValue」を宣言し、数値を格納できるようにします。
この変数は、セル「A1」の値を代入するために使用します。

STEP
値の代入

cellValueに「100」を代入します。
この値を基に、次の条件分岐が行われます。

STEP
条件の評価

IF文を使用して、変数「cellValue」が「10以上か?」どうかを確認します。
条件が真の場合、次のステップでメッセージボックスが表示されます。

STEP
メッセージの表示

条件が満たされた場合、メッセージボックスで「A1の値は10以上です」と表示します。
条件が偽の場合、このステップはスキップされます。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)変数を宣言して指定した値を格納します。
MsgBox (メッセージボックス)条件分岐の結果をメッセージボックスで表示します。

1行ずつ解説

クリック」してコードの詳細解説を見る
  1. Sub CheckValue()
    • 新しいサブルーチン「CheckValue」を定義します。
      このサブルーチンは、セル「A1」の値をチェックして、条件に応じたメッセージを表示する機能を持っています。
  2. Dim cellValue As Long
    • 数値を格納するための変数「cellValue」を宣言します。
      データ型はLong(長整数)です。
  3. cellValue = 100
    • 変数「cellValue」に「100」を代入します。
      これは、後で条件を評価するために使用されます。
  4. If cellValue >= 10 Then
    • 変数「cellValue」が「10以上」であるかどうかを判断します。
      条件が「真」であれば、次の行の処理が実行されます。
  5. MsgBox “A1の値は10以上です”
    • メッセージボックスを表示し、ユーザーに「A1の値は10以上です」と通知します。
  6. End If
    • IF文の終了を示します。
      この時点で条件の評価が完了し、サブルーチンの処理が続きます。
  7. End Sub
    • サブルーチンの終了を示します。
      これで「CheckValue」サブルーチンの処理が完了します。

このコードは、Excel VBAのIF文を使った基本的な条件分岐の使用例を示しています。
セル「A1」に設定された値が「10以上」である場合にメッセージを表示するシンプルな例です。
IF文は、より複雑なロジックを構築する際の基本となる構文であるため、確実に覚えておきましょう。

使用例2: IF文で「Is」演算子を使用

Is演算子を使ったIF文の例を紹介します。

Is演算子は、2つのオブジェクトが同一であるかどうかを判定する場合に使用します。
一致する場合は「True」、一致しない場合は「False」を返します。

以下のコードは、Ws1とWs2が同じシートを指しているかどうか?を判定します。

コード例 | IF文で「Is」演算子を使用

Sub CheckObjectEquality()
    Dim Ws1 As Worksheet
    Dim Ws2 As Worksheet

    Set Ws1 = ThisWorkbook.Sheets(1)
    Set Ws2 = ThisWorkbook.Sheets(1)

    If Ws1 Is Ws2 Then
        MsgBox "Ws1とWs2は同じシートを指しています"
    Else
        MsgBox "Ws1とWs2は異なるシートを指しています"
    End If
End Sub

処理結果

使用例2の結果

コードの動作概要

STEP
ワークシートオブジェクトの変数を宣言

「Ws1」と「Ws2」という2つのワークシートオブジェクトの変数を宣言します。
これにより、後で特定のシートを参照するための準備が整います。

STEP
ワークシートをセット

Setステートメント」を使用して、「Ws1」と「Ws2」にそれぞれ同じシートをセットします。
ここでは、どちらの変数も「ThisWorkbook.Sheets(1)(ブック内の最初のシート)」を指しています。

STEP
Is演算子で比較

「IF文」内で、「Ws1」と「Ws2」が同じオブジェクトを指しているかを「Is演算子」で比較します。
一致する場合は「True」、一致しない場合は「False」が返されます。

STEP
メッセージを表示

比較結果に基づき、同じシートを指しているかどうかをメッセージボックスで表示します。
条件が「True」の場合は「同じシート」、「False」の場合は「異なるシート」と表示されます。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)変数を宣言して指定した値を格納します。
Is演算子2つのオブジェクトが同じかチェックします。
MsgBox (メッセージボックス)条件分岐の結果をメッセージボックスで表示します。

1行ずつ解説

クリック」してコードの詳細解説を見る
  1. Sub CheckObjectEquality()
    • 新しいサブルーチン「CheckObjectEquality」を定義します。
      このサブルーチンは、2つのワークシートオブジェクトが同一かどうかをチェックするために使用されます。
  2. Dim Ws1 As Worksheet
    • ワークシートオブジェクトを格納するためのオブジェクト変数「Ws1」を宣言します。
      これは、後で特定のシートを参照するために使用します。
  3. Dim Ws2 As Worksheet
    • ワークシートオブジェクトを格納するためのもう一つのオブジェクト変数「Ws2」を宣言します。
      これも後で特定のシートを参照するために使用します。
  4. Set Ws1 = ThisWorkbook.Sheets(1)
    • 「Setステートメント」を使用して、オブジェクト変数「Ws1」に現在のブック内の最初のシートをセットします。
      これにより、「Ws1」は特定のシートを指すようになります。
  5. Set Ws2 = ThisWorkbook.Sheets(1)
    • 同様に、「Setステートメント」を使用して、オブジェクト変数「Ws2」にも同じシートをセットします。
      この場合、「Ws1」と「Ws2」は同じシートを指しています。
  6. If Ws1 Is Ws2 Then
    • 「Is演算子」を使用して、オブジェクト変数「Ws1」と「Ws2」が同じシートを指しているかどうかをチェックします。
      もし同じシートを指している場合、この条件は「True」となり、次の行が実行されます。
  7. MsgBox “Ws1とWs2は同じシートを指しています”
    • 同じシートを指している場合に、メッセージボックスで「Ws1とWs2は同じシートを指しています」と表示します。
  8. Else
    • IF文の条件が満たされなかった場合に実行する処理を指定します。
      ここでは、オブジェクト変数「Ws1」と「Ws2」が異なるシートを指している場合の処理を行います。
  9. MsgBox “Ws1とWs2は異なるシートを指しています”
    • 異なるシートを指している場合に、メッセージボックスで「Ws1とWs2は異なるシートを指しています」と表示します。
  10. End If
    • IF文の終了を示します。
      この時点で条件分岐が完了します。
  11. End Sub
    • サブルーチンの終了を示します。
      これで「CheckObjectEquality」サブルーチンの処理が完了します。

このコードは、Is演算子を使って2つのワークシートオブジェクトが同一かどうかを確認する方法を示しています。
オブジェクト同士の比較は、特に同一性を確認したい場合に非常に重要です。
この例では、同じシートを指しているかどうかを確認し、結果をメッセージボックスで表示するシンプルな処理を行っています。
VBAでオブジェクトの同一性を確認する際には、Is演算子が役立ちます。

使用例3: IF文で「Like」演算子を使用

Like演算子を使ったIF文の例を紹介します。

Like演算子は、文字列が特定のパターンに一致するかどうか?を確認する場合に使用されます。
Like演算子では、ワイルドカードを使ってパターンマッチングを行うことができます。

ワイルドカード説明
# (シャープ)任意の1桁の数字に一致します。
*(アスタリスク)0文字以上の任意の文字列に一致します。
? (クエスチョンマーク)任意の1文字に一致します。

以下のコードは、セルA1に入力された文字列が特定の形式に一致するかどうかを判定します。

コード例 | IF文で「Like」演算子を使用

Sub CheckPattern()
    Dim cellValue As String
    
    cellValue = Range("A1").Value

    If cellValue Like "A####" Then
        MsgBox "A1は'A'で始まり、続く4文字が数字です"
    Else
        MsgBox "A1の値は指定のパターンと一致しません"
    End If
End Sub

処理結果

使用例3の結果

コードの動作概要

STEP
文字列変数を宣言

「cellValue」という文字列型の変数を宣言します。
この変数には、セル「A1」の値が格納されます。

STEP
Like演算子でパターンマッチング

IF文内で、「cellValue」が特定のパターン(「A####」)に一致するかをLike演算子で確認します。

STEP
メッセージを表示

条件に一致した場合は、メッセージボックスで「A1は’A’で始まり、続く4文字が数字です」と表示し、一致しない場合は「A1の値は指定のパターンと一致しません」と表示します。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)変数を宣言して指定した値を格納します。
Like演算子 文字列のパターンチェックを行います。
MsgBox (メッセージボックス)条件分岐の結果をメッセージボックスで表示します。

1行ずつ解説

クリック」してコードの詳細解説を見る
  1. Sub CheckPattern()
    • 新しいサブルーチン「CheckPattern」を定義します。
      このサブルーチンは、セルA1の値が特定のパターンに一致するかどうかを確認するために使用されます。
  2. Dim cellValue As String
    • 文字列型の変数「cellValue」を宣言します。
      この変数は、セル「A1」の値を格納するために使用されます。
  3. cellValue = Range(“A1”).Value
    • セル「A1」の値を取得し、それを変数「cellValue」に代入します。
      これにより、「A1」セルに入力された値を後で使用することができます。
  4. If cellValue Like “A####” Then
    • Like演算子を使用して、cellValueが「A####」というパターンに一致するかを確認します。
      このパターンは、文字列が「A」で始まり、続く4文字が数字であることを意味します。
  5. MsgBox “A1は’A’で始まり、続く4文字が数字です”
    • パターンに一致した場合、メッセージボックスで「A1は’A’で始まり、続く4文字が数字です」と表示します。
  6. Else
    • IF文の条件が満たされなかった場合に実行する処理を指定します。
      ここでは、変数「cellValue」が指定のパターンに一致しなかった場合の処理を行います。
  7. MsgBox “A1の値は指定のパターンと一致しません”
    • パターンに一致しなかった場合、メッセージボックスで「A1の値は指定のパターンと一致しません」と表示します。
  8. End If
    • IF文の終了を示します。
      この時点で条件分岐が完了します。
  9. End Sub
    • サブルーチンの終了を示します。
      これで「CheckPattern」サブルーチンの処理が完了します。

このコードは、Like演算子を使ってセル「A1」の値が特定のパターンに一致するかどうかを確認する方法を示しています。
ワイルドカードを使用することで、文字列のパターンマッチングを柔軟に行うことができ、条件に合致した場合や合致しなかった場合に応じた処理を実行します。
特定の形式のデータを確認したり、フィルタリングする際に非常に便利なテクニックです。

使用例4: IF文を1行で記載

IF分で、条件分岐を1行で記載する方法を紹介します。
簡単な条件分岐であれば、IF文を1行でシンプルに記述することが可能です。

この例では、セルA1に入力された数値が10以上かどうかを判定し、その結果をメッセージボックスで表示します。

コード例 | IF文を1行で記載

Sub CheckValueOneLine()
    Dim cellValue As Long
    
    cellValue = Cells(1, 1)
    
    If cellValue >= 10 Then MsgBox "A1の値は10以上です"
End Sub

処理結果

使用例4の結果

コードの動作概要

STEP
数値型変数を宣言

cellValueという数値型(Long)の変数を宣言します。
この変数には、セルA1の値が格納されます。

STEP
値を代入

Cells(1, 1)を使用して、セルA1の値を取得し、変数「cellValue」に代入します。

STEP
IF文を1行で記載

「If…Then構文」を1行で記述し、変数「cellValue」が10以上であればメッセージボックスを表示します。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)変数を宣言して指定した値を格納します。
MsgBox (メッセージボックス)条件分岐の結果をメッセージボックスで表示します。

1行ずつ解説

クリック」してコードの詳細解説を見る
  1. Sub CheckValueOneLine()
    • 新しいサブルーチン「CheckValueOneLine」を定義します。
      このサブルーチンは、セル「A1」の値が「10以上か?」どうかを判定し、結果をメッセージボックスで表示するために使用されます。
  2. Dim cellValue As Long
    • 数値を格納するための変数「cellValue」を宣言します。
      データ型はLong(長整数)です。これにより、数値を扱う準備が整います。
  3. cellValue = Cells(1, 1)
    • Cells(1, 1)を使用してセル「A1」の値を取得し、それを変数「cellValue」に代入します。
      この場合、Cells(1, 1)は、セル「A1」を指します。
  4. If cellValue >= 10 Then MsgBox “A1の値は10以上です”
    • IF文を1行で記述しています。
      変数「cellValue」が「10以上」の場合、メッセージボックスで「A1の値は10以上です」と表示します。
      条件が満たされなければ、この行はスキップされます。
  5. End Sub
    • サブルーチンの終了を示します。
      これで「CheckValueOneLine」サブルーチンの処理が完了します。

このコードは、IF文を1行で記述し、セルA1の値が10以上かどうかを確認する方法を示しています。
この方法は、コードをシンプルかつ直感的に書くために非常に有効です。
特に短いロジックでは、1行のIF文を使用することでコードの可読性が向上します。

使用例5: IF ~ Else ~ End If 文を使用

IF ~ Else ~ End If 文の使用方法を紹介します。

以下のコードでは、セルA1に入力された数値が10以上かどうかを判定し、10以上の場合とそれ以外の場合で異なるメッセージを表示します。

コード例 | IF ~ Else ~ End If 文を使用

Sub CheckValueWithElse()
    Dim cellValue As Long
    
    cellValue = Range("A1").Value

    If cellValue >= 10 Then
        MsgBox "A1の値は10以上です"
    Else
        MsgBox "A1の値は10未満です"
    End If
End Sub

処理結果

使用例5の結果

コードの動作概要

STEP
数値型変数を宣言

cellValueという数値型(Long)の変数を宣言します。
この変数には、セルA1の値が格納されます。

STEP
セルの値を取得

Range(“A1”).Valueを使用して、セル「A1」の値を取得し、変数「cellValue」に代入します。

STEP
条件を評価

IF文を使って、変数「cellValue」が「10以上」であるかどうかを評価します。

STEP
メッセージを表示

条件が満たされた場合はメッセージボックスで「A1の値は10以上です」と表示し、満たされなかった場合は「A1の値は10未満です」と表示します。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)変数を宣言して指定した値を格納します。
MsgBox (メッセージボックス)条件分岐の結果をメッセージボックスで表示します。

1行ずつ解説

クリック」してコードの詳細解説を見る
  1. Sub CheckValueWithElse()
    • 新しいサブルーチン「CheckValueWithElse」を定義します。
      このサブルーチンは、セル「A1」の値が「10以上か?」どうかを判定し、その結果に応じて異なるメッセージを表示するために使用されます。
  2. Dim cellValue As Long
    • 数値を格納するための変数「cellValue」を宣言します。
      データ型はLong(長整数)です。この変数にセル「A1」の値を格納します。
  3. cellValue = Range(“A1”).Value
    • Range(“A1”).Valueを使って、セル「A1」の値を取得し、それを変数「cellValue」に代入します。
      これにより、セル「A1」の値を後で条件分岐に使用できます。
  4. If cellValue >= 10 Then
    • IF文を使用して、変数「cellValue」が「10以上」であるかどうかを評価します。
      この条件が真である場合、次の行が実行されます。
  5. MsgBox “A1の値は10以上です”
    • 条件が満たされた場合、メッセージボックスで「A1の値は10以上です」と表示します。
      これは変数「cellValue」が「10以上」である場合にのみ実行されます。
  6. Else
    • IF文の条件が満たされなかった場合に実行する処理を指定します。
      ここでは、変数「cellValue」が「10未満」である場合の処理を行います。
  7. MsgBox “A1の値は10未満です”
    • 変数「cellValue」が「10未満」である場合、メッセージボックスで「A1の値は10未満です」と表示します。
  8. End If
    • IF文の終了を示します。
      この時点で条件分岐が完了します。
  9. End Sub
    • サブルーチンの終了を示します。
      これで「CheckValueWithElse」サブルーチンの処理が完了します。

このコードは、IF ~ Else ~ End If 文を使用して、条件に応じた異なる処理を実行する方法を示しています。
この方法は、複数のケースに対して異なる処理を行う際に非常に役立ちます。
IF ~ Else ~ End If 文を理解することで、より柔軟なVBAプログラムを作成できるようになります。

使用例6: IF ~ ElseIf ~ Else ~ End If 文の使用 (複数の条件を評価する)

IF ~ ElseIf ~ Else ~ End If 文の使用方法を紹介します。

このコードでは、セルA1に入力された数値が100以上、50以上、またはそれ未満かどうかを判定します。

コード例 | IF ~ ElseIf ~ Else ~ End If 文の使用

Sub CheckMultipleValues()
    Dim cellValue As Long
    
    cellValue = Range("A1").Value

    If cellValue >= 100 Then
        MsgBox "A1の値は100以上です"
    ElseIf cellValue >= 50 Then
        MsgBox "A1の値は50以上100未満です"
    Else
        MsgBox "A1の値は50未満です"
    End If
End Sub

処理結果

使用例6の結果

コードの動作概要

STEP
数値型変数を宣言

「cellValue」という数値型(Long)の変数を宣言します。
この変数には、セル「A1」の値が格納されます。

STEP
セルの値を取得

Range(“A1”).Valueを使用して、セル「A1」の値を取得し、変数「cellValue」に代入します。

STEP
複数の条件を評価

IF ~ ElseIf ~ Else構文を使って、変数「cellValue」が「100以上」、「50以上100未満」、または「50未満」であるかを評価します。

STEP
メッセージを表示

条件に応じて異なるメッセージをメッセージボックスで表示します。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)変数を宣言して指定した値を格納します。
MsgBox (メッセージボックス)条件分岐の結果をメッセージボックスで表示します。

1行ずつ解説

クリック」してコードの詳細解説を見る
  1. Sub CheckMultipleValues()
    • 新しいサブルーチン「CheckMultipleValues」を定義します。
      このサブルーチンは、セルA1の値が100以上、50以上100未満、または50未満かどうかを判定し、その結果に応じて異なるメッセージを表示するために使用されます。
  2. Dim cellValue As Long
    • 数値を格納するための変数「cellValue」を宣言します。
      データ型はLong(長整数)です。この変数にセル「A1」の値を格納します。
  3. cellValue = Range(“A1”).Value
    • Range(“A1”).Valueを使って、セル「A1」の値を取得し、それを変数「cellValue」に代入します。
      これにより、セル「A1」の値を後で条件分岐に使用できます。
  4. If cellValue >= 100 Then
    • IF文を使用して、変数「cellValue」が「100以上」であるかどうかを評価します。
      この条件が真である場合、次の行が実行されます。
  5. MsgBox “A1の値は100以上です”
    • 条件が満たされた場合、メッセージボックスで「A1の値は100以上です」と表示します。
      これは変数「cellValue」が「100以上」である場合にのみ実行されます。
  6. ElseIf cellValue >= 50 Then
    • 最初のIF文の条件が満たされなかった場合、次に変数「cellValue」が「50以上100未満」であるかを評価します。
      この条件が真である場合、次の行が実行されます。
  7. MsgBox “A1の値は50以上100未満です”
    • 条件が満たされた場合、メッセージボックスで「A1の値は50以上100未満です」と表示します。
      これは変数「cellValue」が「50以上100未満」である場合にのみ実行されます。
  8. Else
    • これまでの条件がすべて満たされなかった場合に実行される処理を指定します。
      ここでは、変数「cellValue」が「50未満」である場合の処理を行います。
  9. MsgBox “A1の値は50未満です”
    • 変数「cellValue」が「50未満」である場合、メッセージボックスで「A1の値は50未満です」と表示します。
  10. End If
    • IF文の終了を示します。
      この時点で条件分岐が完了します。
  11. End Sub
    • サブルーチンの終了を示します。
      これで「CheckMultipleValues」サブルーチンの処理が完了します。

このコードは、IF ~ ElseIf ~ Else ~ End If 文を使用して、複数の条件に応じた異なる処理を実行する方法を示しています。
複数の条件を評価する際には、この構文を用いることでコードの可読性を保ちながら、効率的に処理を行うことが可能です。

さらに、Select Case文を使用することで、条件が多い場合にはより整理されたコードを記述することができます。

Select Case文で同じ処理を記載した例

同じ条件分岐をSelect Case文で記述すると、以下のようになります。
Select Case文を使用すると、複数の条件を整理して記述することができ、コードがより分かりやすくなります。

Sub CheckMultipleValuesSelectCase()
    Dim cellValue As Long
    
    cellValue = Range("A1").Value

    Select Case cellValue
        Case Is >= 100
            MsgBox "A1の値は100以上です"
        Case Is >= 50
            MsgBox "A1の値は50以上100未満です"
        Case Else
            MsgBox "A1の値は50未満です"
    End Select
End Sub

この例では、Select Case文を使うことで、条件ごとの処理を整理して記述しています。
Select Case文は、特に条件が多い場合にIF ElseIf文よりも可読性が高く、メンテナンスがしやすくなるという利点があります。

Select Case文については、別記事で解説していますので、そちらをご覧ください。

あわせて読みたい
VBA Select Caseで複数の文字列・条件を簡単処理!ワイルドカードや文字列比較の応用例も紹介 「VBAのIF分で複数の条件分岐を行うと、コードが複雑になってよく分からなくなる...」そんな悩みを抱えていませんか? ・複数の条件をIF文で書くと、コードが複雑に...
スポンサーリンク

この記事のまとめ

ポイントのおさらい

さらに学ぶために

さらなる学習内容
  • Select Case文の活用
    • 複数の条件分岐を整理された形で書くことができます。特に条件が多い場合に便利です。
  • VBAでの条件分岐の応用
    • 実際の業務で条件分岐をどのように活用するかを学び、より高度なプログラムを作成しましょう。

この記事を通じて、IF文を使った条件分岐の基礎をしっかりと理解し、実務に役立つスキルを習得できることを目指しました。

今後もVBAの知識を深めていくことで、さらに高度なプログラムを構築できるようになります。

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「共通」を見る 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次