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

・VBAで条件分岐を書きたいけど、どう書けばいいの?
・IF文・IF Else文・ElseIfの違いがごちゃごちゃ…
・If文と合わせてAND・OR・Notは、どう使えばいいの?



VBAの条件分岐は、どんな業務自動化でも避けて通れない
基本テクニックです。
でも実は、書き方のルールと使い分け方さえ押さえれば
とてもシンプルに使えるんです。
この記事では、VBAのIF文やIF Else文を使った複雑な条件分岐の方法を詳しく解説します。
初心者の方でも迷わず書けるように、コピペOKのコード例付きで丁寧に解説しています。
実務でよく使うパターンを中心に、「これが知りたかった!」という内容をギュッと詰め込みました。
ぜひ、最後まで読んで「VBAの条件分岐」をマスターしてください!
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない…」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
- 動画での丁寧な解説で、自分のペースで学べる
- 実務ベースのサンプルコードで、すぐに応用できる
- 繰り返し視聴OKだから、つまずいても安心


\ 今すぐ条件分岐をマスターしたい方はこちら /
この記事を見て「できるようになる」こと
- VBAのIF文とは何か?理解する
- IF Else文や、IF ElseIf文を使った複雑な条件分岐を理解する
- IF分の注意ポイントを把握する
- IF分を実践でどのように使用するか確認する
VBAのIF文とは?|条件分岐の基本をわかりやすく解説
VBAにおける「IF文」は、条件によって処理の流れを変えるための構文です。
これは「条件分岐」とも呼ばれ、Excel VBAで最もよく使われる命令の一つです。
たとえばこんな使い方ができます👇
セルA1の値が100以上なら「合格」、100未満なら「不合格」とB1セルに表示する
このように、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行で記述


この構文では、「条件式」が「真」の場合に、Then以下の「真の処理」が実行されます。
条件が「偽」の場合は、何も行われません。
■ 基本構文(複数行)
If Range("A1") = 1000 Then
Range("B1") = Range("A1") * 10
End If
- 条件式
- A1の値が「1000」かどうか?
- 処理内容
- A1が「1000」なら、B1に「A1 × 10」の値を代入
- 処理内容
- A1の値が「1000」かどうか?
- 何もしない場合
- 条件が偽なら、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 Range("A1") = 1000 Then
Range("B1") = Range("A1") * 10
Else
Range("B1") = Range("A1") * 100
End If
- 条件式
- A1の値が「1000」かどうか?
- 一致する場合
- A1が「1000」なら、B1に「A1 × 10」の値を代入
- 一致する場合
- A1の値が「1000」かどうか?
- それ以外(Else)の場合
- それ以外の場合、B1に「A1 × 100」の値を代入
If文では「偽」の場合に何もしない構成が基本でしたが、If Else文なら真でも偽でもどちらかの処理が必ず実行されるのが特徴です。
次は、複数の条件を評価して処理を分けたい場合に便利な「If ElseIf文」について詳しく見ていきましょう!
If Then ElseIf文の使い方|複数の条件を順に評価して処理を分ける方法
VBAで3つ以上の条件を評価したいときに使うのが「If ElseIf文」です。
この構文を使えば、「Aの場合はこれ、Bならこれ、その他はこれ」といった多段階の条件分岐がスッキリ書けます。


使用例
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の値が「1000」かどうか?
- 次の条件式
- A1の値が「100」かどうか?
- 一致する場合
- A1が「1000」なら、B1に「A1 × 100」の値を代入
- 一致する場合
- A1の値が「100」かどうか?
- それ以外(Else)の場合
- それ以外の場合、B1に「A1 × 1000」の値を代入
Select Caseとの違いは?
If ElseIf文と似た構文に「Select Case文」があります。
どちらを使ってもよいですが、以下のように使い分けるのがおすすめです
条件分岐が… | おすすめ構文 |
---|---|
=(等しい)だけ | Select Case |
>, <, >=, AND, OR など複雑 | If ElseIf |
Select Case文についてもっと詳しく見たい方は、別記事で解説しているので、是非ご覧ください。


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講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べる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
処理結果


コードの動作概要
変数「cellValue」を宣言し、数値を格納できるようにします。
この変数は、セル「A1」の値を代入するために使用します。
cellValueに「100」を代入します。
この値を基に、次の条件分岐が行われます。
IF文を使用して、変数「cellValue」が「10以上か?」どうかを確認します。
条件が真の場合、次のステップでメッセージボックスが表示されます。
条件が満たされた場合、メッセージボックスで「A1の値は10以上です」と表示します。
条件が偽の場合、このステップはスキップされます。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim (変数) | 変数を宣言して指定した値を格納します。 |
MsgBox (メッセージボックス) | 条件分岐の結果をメッセージボックスで表示します。 |
1行ずつ解説
「クリック」してコードの詳細解説を見る
- Sub CheckValue()
- 新しいサブルーチン「CheckValue」を定義します。
このサブルーチンは、セル「A1」の値をチェックして、条件に応じたメッセージを表示する機能を持っています。
- 新しいサブルーチン「CheckValue」を定義します。
- Dim cellValue As Long
- 数値を格納するための変数「cellValue」を宣言します。
データ型はLong(長整数)です。
- 数値を格納するための変数「cellValue」を宣言します。
- cellValue = 100
- 変数「cellValue」に「100」を代入します。
これは、後で条件を評価するために使用されます。
- 変数「cellValue」に「100」を代入します。
- If cellValue >= 10 Then
- 変数「cellValue」が「10以上」であるかどうかを判断します。
条件が「真」であれば、次の行の処理が実行されます。
- 変数「cellValue」が「10以上」であるかどうかを判断します。
- MsgBox “A1の値は10以上です”
- メッセージボックスを表示し、ユーザーに「A1の値は10以上です」と通知します。
- End If
- IF文の終了を示します。
この時点で条件の評価が完了し、サブルーチンの処理が続きます。
- IF文の終了を示します。
- 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
処理結果


コードの動作概要
「Ws1」と「Ws2」という2つのワークシートオブジェクトの変数を宣言します。
これにより、後で特定のシートを参照するための準備が整います。
「Setステートメント」を使用して、「Ws1」と「Ws2」にそれぞれ同じシートをセットします。
ここでは、どちらの変数も「ThisWorkbook.Sheets(1)(ブック内の最初のシート)」を指しています。
「IF文」内で、「Ws1」と「Ws2」が同じオブジェクトを指しているかを「Is演算子」で比較します。
一致する場合は「True」、一致しない場合は「False」が返されます。
比較結果に基づき、同じシートを指しているかどうかをメッセージボックスで表示します。
条件が「True」の場合は「同じシート」、「False」の場合は「異なるシート」と表示されます。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim (変数) | 変数を宣言して指定した値を格納します。 |
Is演算子 | 2つのオブジェクトが同じかチェックします。 |
MsgBox (メッセージボックス) | 条件分岐の結果をメッセージボックスで表示します。 |
1行ずつ解説
「クリック」してコードの詳細解説を見る
- Sub CheckObjectEquality()
- 新しいサブルーチン「CheckObjectEquality」を定義します。
このサブルーチンは、2つのワークシートオブジェクトが同一かどうかをチェックするために使用されます。
- 新しいサブルーチン「CheckObjectEquality」を定義します。
- Dim Ws1 As Worksheet
- ワークシートオブジェクトを格納するためのオブジェクト変数「Ws1」を宣言します。
これは、後で特定のシートを参照するために使用します。
- ワークシートオブジェクトを格納するためのオブジェクト変数「Ws1」を宣言します。
- Dim Ws2 As Worksheet
- ワークシートオブジェクトを格納するためのもう一つのオブジェクト変数「Ws2」を宣言します。
これも後で特定のシートを参照するために使用します。
- ワークシートオブジェクトを格納するためのもう一つのオブジェクト変数「Ws2」を宣言します。
- Set Ws1 = ThisWorkbook.Sheets(1)
- 「Setステートメント」を使用して、オブジェクト変数「Ws1」に現在のブック内の最初のシートをセットします。
これにより、「Ws1」は特定のシートを指すようになります。
- 「Setステートメント」を使用して、オブジェクト変数「Ws1」に現在のブック内の最初のシートをセットします。
- Set Ws2 = ThisWorkbook.Sheets(1)
- 同様に、「Setステートメント」を使用して、オブジェクト変数「Ws2」にも同じシートをセットします。
この場合、「Ws1」と「Ws2」は同じシートを指しています。
- 同様に、「Setステートメント」を使用して、オブジェクト変数「Ws2」にも同じシートをセットします。
- If Ws1 Is Ws2 Then
- 「Is演算子」を使用して、オブジェクト変数「Ws1」と「Ws2」が同じシートを指しているかどうかをチェックします。
もし同じシートを指している場合、この条件は「True」となり、次の行が実行されます。
- 「Is演算子」を使用して、オブジェクト変数「Ws1」と「Ws2」が同じシートを指しているかどうかをチェックします。
- MsgBox “Ws1とWs2は同じシートを指しています”
- 同じシートを指している場合に、メッセージボックスで「Ws1とWs2は同じシートを指しています」と表示します。
- Else
- IF文の条件が満たされなかった場合に実行する処理を指定します。
ここでは、オブジェクト変数「Ws1」と「Ws2」が異なるシートを指している場合の処理を行います。
- IF文の条件が満たされなかった場合に実行する処理を指定します。
- MsgBox “Ws1とWs2は異なるシートを指しています”
- 異なるシートを指している場合に、メッセージボックスで「Ws1とWs2は異なるシートを指しています」と表示します。
- End If
- IF文の終了を示します。
この時点で条件分岐が完了します。
- IF文の終了を示します。
- 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
処理結果


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


コードの動作概要
cellValueという数値型(Long)の変数を宣言します。
この変数には、セルA1の値が格納されます。
Cells(1, 1)を使用して、セルA1の値を取得し、変数「cellValue」に代入します。
「If…Then構文」を1行で記述し、変数「cellValue」が10以上であればメッセージボックスを表示します。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim (変数) | 変数を宣言して指定した値を格納します。 |
MsgBox (メッセージボックス) | 条件分岐の結果をメッセージボックスで表示します。 |
1行ずつ解説
「クリック」してコードの詳細解説を見る
- Sub CheckValueOneLine()
- 新しいサブルーチン「CheckValueOneLine」を定義します。
このサブルーチンは、セル「A1」の値が「10以上か?」どうかを判定し、結果をメッセージボックスで表示するために使用されます。
- 新しいサブルーチン「CheckValueOneLine」を定義します。
- Dim cellValue As Long
- 数値を格納するための変数「cellValue」を宣言します。
データ型はLong(長整数)です。これにより、数値を扱う準備が整います。
- 数値を格納するための変数「cellValue」を宣言します。
- cellValue = Cells(1, 1)
- Cells(1, 1)を使用してセル「A1」の値を取得し、それを変数「cellValue」に代入します。
この場合、Cells(1, 1)は、セル「A1」を指します。
- Cells(1, 1)を使用してセル「A1」の値を取得し、それを変数「cellValue」に代入します。
- If cellValue >= 10 Then MsgBox “A1の値は10以上です”
- IF文を1行で記述しています。
変数「cellValue」が「10以上」の場合、メッセージボックスで「A1の値は10以上です」と表示します。
条件が満たされなければ、この行はスキップされます。
- IF文を1行で記述しています。
- 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
処理結果


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


コードの動作概要
「cellValue」という数値型(Long)の変数を宣言します。
この変数には、セル「A1」の値が格納されます。
Range(“A1”).Valueを使用して、セル「A1」の値を取得し、変数「cellValue」に代入します。
IF ~ ElseIf ~ Else構文を使って、変数「cellValue」が「100以上」、「50以上100未満」、または「50未満」であるかを評価します。
条件に応じて異なるメッセージをメッセージボックスで表示します。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim (変数) | 変数を宣言して指定した値を格納します。 |
MsgBox (メッセージボックス) | 条件分岐の結果をメッセージボックスで表示します。 |
1行ずつ解説
「クリック」してコードの詳細解説を見る
- Sub CheckMultipleValues()
- 新しいサブルーチン「CheckMultipleValues」を定義します。
このサブルーチンは、セルA1の値が100以上、50以上100未満、または50未満かどうかを判定し、その結果に応じて異なるメッセージを表示するために使用されます。
- 新しいサブルーチン「CheckMultipleValues」を定義します。
- Dim cellValue As Long
- 数値を格納するための変数「cellValue」を宣言します。
データ型はLong(長整数)です。この変数にセル「A1」の値を格納します。
- 数値を格納するための変数「cellValue」を宣言します。
- cellValue = Range(“A1”).Value
- Range(“A1”).Valueを使って、セル「A1」の値を取得し、それを変数「cellValue」に代入します。
これにより、セル「A1」の値を後で条件分岐に使用できます。
- Range(“A1”).Valueを使って、セル「A1」の値を取得し、それを変数「cellValue」に代入します。
- If cellValue >= 100 Then
- IF文を使用して、変数「cellValue」が「100以上」であるかどうかを評価します。
この条件が真である場合、次の行が実行されます。
- IF文を使用して、変数「cellValue」が「100以上」であるかどうかを評価します。
- MsgBox “A1の値は100以上です”
- 条件が満たされた場合、メッセージボックスで「A1の値は100以上です」と表示します。
これは変数「cellValue」が「100以上」である場合にのみ実行されます。
- 条件が満たされた場合、メッセージボックスで「A1の値は100以上です」と表示します。
- ElseIf cellValue >= 50 Then
- 最初のIF文の条件が満たされなかった場合、次に変数「cellValue」が「50以上100未満」であるかを評価します。
この条件が真である場合、次の行が実行されます。
- 最初のIF文の条件が満たされなかった場合、次に変数「cellValue」が「50以上100未満」であるかを評価します。
- MsgBox “A1の値は50以上100未満です”
- 条件が満たされた場合、メッセージボックスで「A1の値は50以上100未満です」と表示します。
これは変数「cellValue」が「50以上100未満」である場合にのみ実行されます。
- 条件が満たされた場合、メッセージボックスで「A1の値は50以上100未満です」と表示します。
- Else
- これまでの条件がすべて満たされなかった場合に実行される処理を指定します。
ここでは、変数「cellValue」が「50未満」である場合の処理を行います。
- これまでの条件がすべて満たされなかった場合に実行される処理を指定します。
- MsgBox “A1の値は50未満です”
- 変数「cellValue」が「50未満」である場合、メッセージボックスで「A1の値は50未満です」と表示します。
- End If
- IF文の終了を示します。
この時点で条件分岐が完了します。
- IF文の終了を示します。
- 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文については、別記事で解説していますので、そちらをご覧ください。


この記事のまとめ
ポイントのおさらい
- IF文を使って条件分岐を理解する
- IF文を使うことで、特定の条件に応じた処理を実行できます。
簡単な条件分岐から複雑なロジックまで、幅広く活用できます。
⇒ 「VBAにおけるIF文とは?」をもう一度見る。
⇒ 「If Then文の基本構文とは?|3行&1行記述の使い分け方」をもう一度見る。
- IF文を使うことで、特定の条件に応じた処理を実行できます。
- IF Else文とIF ElseIf文の使い方を学ぶ
- IF Else文とIF ElseIf文を使うと、条件が「真」と「偽」の場合に異なる処理を実行できます。
また、複数の条件を順に評価して、最適な処理を選択することも可能です。
⇒ 「If Then Else文の基本構文とは?|2つの処理を条件で分ける方法」をもう一度見る。
⇒ 「If Then ElseIf文の使い方|複数の条件を順に評価して処理を分ける方法」をもう一度見る。
- IF Else文とIF ElseIf文を使うと、条件が「真」と「偽」の場合に異なる処理を実行できます。
- IF文を使う際の注意点と対策を確認する
- IF文を使う際には、コードの複雑化や条件の順序に注意する必要があります。
対策としては、コードをシンプルに保ち、Select Case文などの代替手法を検討することが有効です。
⇒ 「VBAのIF文を使うときの注意点と書き方のコツ」もう一度見る。
- IF文を使う際には、コードの複雑化や条件の順序に注意する必要があります。
- IF文の具体的な使用例を実践する
- この記事で紹介したIF文の使用例を通じて、具体的な条件分岐の実装方法を学びました。
これにより、実際の業務でのVBAプログラム作成に役立つ知識が身につきます。
⇒ 「IF分の使用例を紹介します。」もう一度見る。
- この記事で紹介したIF文の使用例を通じて、具体的な条件分岐の実装方法を学びました。
さらに学ぶために
- Select Case文の活用
- 複数の条件分岐を整理された形で書くことができます。特に条件が多い場合に便利です。
- VBAでの条件分岐の応用
- 実際の業務で条件分岐をどのように活用するかを学び、より高度なプログラムを作成しましょう。
この記事を通じて、IF文を使った条件分岐の基礎をしっかりと理解し、実務に役立つスキルを習得できることを目指しました。
今後もVBAの知識を深めていくことで、さらに高度なプログラムを構築できるようになります。

