「VBAで条件分岐を使いたいけれど、どう書けばいいのかわからない…。」
このようなことで悩んでいませんか?

・IF文を使いたいけれど、条件によって異なる処理を
どう書き分ければいいのか分からない。
・IF Else文の使い方がよくわからない。
・複数の条件を使った複雑な処理を
どう組み立てればいいのか悩んでいる。



その場合は、VBAの「If Else文」を
使用すると解決します!
この記事では、VBAのIF文やIF Else文を使った条件分岐の方法を詳しく解説します。
基本的な構文から実際の業務で役立つ応用例まで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を見て「できるようになる」こと
この記事を読むことで、以下のことができるようになります。
- VBAのIF文とは何か?理解する
- IF Else文や、IF ElseIf文を使った複雑な条件分岐を理解する
- IF分の注意ポイントを把握する
- IF分を実践でどのように使用するか確認する
VBAにおけるIF文とは?
VBAのIF文は、指定した条件が「真」か「偽」かを判断し、それに応じて異なる処理を実行するための構文です。
条件分岐とも呼ばれ、プログラムの流れをコントロールする際に頻繁に使用されます。


VBAのIF文には、以下の3種類があります。
- IF文
- 指定した条件が「真」であれば処理を実行し、そうでなければ何も行わない。
- IF Else文
- 条件が「真」の場合に1つの処理を、そうでない場合に別の処理を実行する。
- IF ElseIf文
- 複数の条件を順に評価し、最初に「真」となる条件に対応する処理を実行する。
IF文の基本構成
まず、IF文の基本的な構成を理解しましょう。


この構文では、「条件式」が「真」の場合に、Then以下の「真の処理」が実行されます。
条件が「偽」の場合は、何も行われません。
【 使用例 】
If Range("A1") = 1000 Then
Range("B1") = Range("A1") * 10
End If
基本的にこのように3行使用し記載することが一般的です。
しかし、IF文は1行で簡潔に記載することも可能です。


例えば、セルA1の値が10以上である場合に「A1は10以上です」とメッセージを表示するコードは、以下のように1行で書くことができます。
If Range("A1").Value >= 10 Then MsgBox "A1は10以上です"
この方法は、短い条件分岐を記述する際に便利です。
IF Else文の基本構成
次に、IF Else文について説明します。


IF Else文は、条件式が「真」の場合に「真の処理」を行い、その他の場合に「偽の処理」を行うことができます。
使用例
If Range("A1") = 1000 Then
Range("B1") = Range("A1") * 10
Else
Range("B1") = Range("A1") * 100
End If
これにより、条件に応じて2つの異なる処理を選択できるようになります。
複数の条件を扱う場合:IF ElseIf文
複数の条件を評価する場合は、IF ElseIf文を使用します。


IF ElseIf文は、条件式1が「真」の場合に「Aの処理」を行い、条件式2が「真」の場合に「Bの処理」、その他の場合に「Cの処理」を行うことができます。
これにより、複数の条件を順に評価し、最初に「真」となる条件の処理を実行します。
使用例
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
これにより、条件が複数ある場合でも、効率的に条件分岐を行うことができます。
より詳しい情報は、Microsoft公式 – If…Then…Else ステートメントを使用するを参照してみてください。
VBAのIF文を使うにあたっての注意ポイント
IF文は非常に便利ですが、いくつかのデメリットがあります。
特に以下の点に注意し、それに対する対策も考慮することが重要です。
- コードが長くなり、複雑になる可能性
- 複数の条件を扱う場合、IF文を連続して書いたり、ネスト(入れ子)させることで、コードが長くなり、見通しが悪くなることがあります。
これにより、後でコードを見直す際に理解しにくくなり、バグが発生しやすくなります。
対策として、複数の条件を評価する場合や、ネストが深くなる場合は、できるだけシンプルに書くように心がけましょう。
似た処理を関数やサブルーチンにまとめることでコードを整理したり、Select Case文を使用すると、コードが簡潔で分かりやすくなります。
また、条件式を簡潔に書けるように、論理演算子(AND, OR)を適切に使うことも有効です。
- 複数の条件を扱う場合、IF文を連続して書いたり、ネスト(入れ子)させることで、コードが長くなり、見通しが悪くなることがあります。
- 条件の順序に注意する
- IF文では、条件が上から順に評価されるため、条件の順序を誤ると、意図しない結果になることがあります。
例えば、複数の条件がある場合に、最も一般的な条件を最初に評価しないと、効率が悪くなることがあります。
対策として、IF文を書く際には、最も一般的な条件や、プログラムの目的において重要な条件を先に評価するようにしましょう。
これにより、コードの効率が向上し、誤解を避けることができます。
また、条件の評価順序が重要であることを常に意識し、テストを行うことで正確な動作を確認することが大切です。
- IF文では、条件が上から順に評価されるため、条件の順序を誤ると、意図しない結果になることがあります。
VBAのIF分の使用例をご紹介
それでは、IF分の使用例について解説します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べるVBA講座はこちら /
使用例1: 基本的な If 文
基本的な IF ~ End If 文の使用方法を紹介します。
例えば、変数「cellValue」に入力された数値が10以上かどうか?を判定するコードです。
Sub CheckValue()
Dim cellValue As Long
cellValue = 100
If cellValue >= 10 Then
MsgBox "A1の値は10以上です"
End If
End Sub
- STEP1変数を宣言
変数「cellValue」を宣言し、数値を格納できるようにします。
この変数は、セル「A1」の値を代入するために使用します。 - STEP2値の代入
cellValueに「100」を代入します。
この値を基に、次の条件分岐が行われます。 - STEP3条件の評価
IF文を使用して、変数「cellValue」が「10以上か?」どうかを確認します。
条件が真の場合、次のステップでメッセージボックスが表示されます。 - STEP4メッセージの表示
条件が満たされた場合、メッセージボックスで「A1の値は10以上です」と表示します。
条件が偽の場合、このステップはスキップされます。
動作結果


このコードで使用している機能
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が同じシートを指しているかどうか?を判定します。
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
- STEP1ワークシートオブジェクトの変数を宣言
「Ws1」と「Ws2」という2つのワークシートオブジェクトの変数を宣言します。
これにより、後で特定のシートを参照するための準備が整います。 - STEP2ワークシートをセット
「Setステートメント」を使用して、「Ws1」と「Ws2」にそれぞれ同じシートをセットします。
ここでは、どちらの変数も「ThisWorkbook.Sheets(1)(ブック内の最初のシート)」を指しています。 - STEP3Is演算子で比較
「IF文」内で、「Ws1」と「Ws2」が同じオブジェクトを指しているかを「Is演算子」で比較します。
一致する場合は「True」、一致しない場合は「False」が返されます。 - STEP4メッセージを表示
比較結果に基づき、同じシートを指しているかどうかをメッセージボックスで表示します。
条件が「True」の場合は「同じシート」、「False」の場合は「異なるシート」と表示されます。
処理結果


このコードで使用している機能
- Dim – Set (オブジェクト変数)
- 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に入力された文字列が特定の形式に一致するかどうかを判定します。
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
- STEP1文字列変数を宣言
「cellValue」という文字列型の変数を宣言します。
この変数には、セル「A1」の値が格納されます。 - STEP2Like演算子でパターンマッチング
IF文内で、「cellValue」が特定のパターン(「A####」)に一致するかをLike演算子で確認します。
- STEP3メッセージを表示
条件に一致した場合は、メッセージボックスで「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以上かどうかを判定し、その結果をメッセージボックスで表示します。
Sub CheckValueOneLine()
Dim cellValue As Long
cellValue = Cells(1, 1)
If cellValue >= 10 Then MsgBox "A1の値は10以上です"
End Sub
- STEP1数値型変数を宣言
cellValueという数値型(Long)の変数を宣言します。
この変数には、セルA1の値が格納されます。 - STEP2値を代入
Cells(1, 1)を使用して、セルA1の値を取得し、変数「cellValue」に代入します。
- STEP3IF文を1行で記載
「If…Then構文」を1行で記述し、変数「cellValue」が10以上であればメッセージボックスを表示します。
処理結果


このコードで使用している機能
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以上の場合とそれ以外の場合で異なるメッセージを表示します。
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
- STEP1数値型変数を宣言
cellValueという数値型(Long)の変数を宣言します。
この変数には、セルA1の値が格納されます。 - STEP2セルの値を取得
Range(“A1”).Valueを使用して、セル「A1」の値を取得し、変数「cellValue」に代入します。
- STEP3条件を評価
IF文を使って、変数「cellValue」が「10以上」であるかどうかを評価します。。
- STEP4メッセージを表示
条件が満たされた場合はメッセージボックスで「A1の値は10以上です」と表示し、満たされなかった場合は「A1の値は10未満です」と表示します。
処理結果


このコードで使用している機能
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以上、またはそれ未満かどうかを判定します。
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
- STEP1数値型変数を宣言
「cellValue」という数値型(Long)の変数を宣言します。
この変数には、セル「A1」の値が格納されます。 - STEP2セルの値を取得
Range(“A1”).Valueを使用して、セル「A1」の値を取得し、変数「cellValue」に代入します。
- STEP3複数の条件を評価
IF ~ ElseIf ~ Else構文を使って、変数「cellValue」が「100以上」、「50以上100未満」、または「50未満」であるかを評価します。。
- STEP4メッセージを表示
条件に応じて異なるメッセージをメッセージボックスで表示します。
処理結果


このコードで使用している機能
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文については、別記事で解説していますので、そちらをご覧ください。


この記事のまとめ
ポイントのおさらい
さらに学ぶために
- Select Case文の活用
- 複数の条件分岐を整理された形で書くことができます。特に条件が多い場合に便利です。
- VBAでの条件分岐の応用
- 実際の業務で条件分岐をどのように活用するかを学び、より高度なプログラムを作成しましょう。
この記事を通じて、IF文を使った条件分岐の基礎をしっかりと理解し、実務に役立つスキルを習得できることを目指しました。
今後もVBAの知識を深めていくことで、さらに高度なプログラムを構築できるようになります。

