本記事はエクセル2019で動作確認を行っています。
ExcelVBAはご自身でコードを記述することが習得への近道です。
サンプルコードを実際に入力することをおすすめします。

本記事はこのような疑問にお答えします。
マクロを記述していく中で、コードを順番に動かしていくだけでは、思った処理を行えない場合があります。
様々な条件に対応するには「条件分岐」という考え方を知っておきましょう。
かんたんに説明すると、「もし○○ならば、△△の処理を行う。違うなら□□の処理を行う。」
というものです。
VBAを使うには必ず知っておかないといけない考え方なので、しっかり押さえていきましょう。
1度で理解できない場合は、何度も読み返すことをおすすめします。
条件分岐の方法を理解する前に、比較演算子について触れておきます。
比較演算子とは
二つの式や値を比較し、その結果を真偽値で返すものを指します。
比較には=(イコール)か否か。大きいか小さいかで比較していきます。
内容 | 演算子 |
---|---|
等しい | = |
左辺が大きい | > |
左辺が小さい | < |
右辺以上 | >= |
右辺以下 | <= |
等しくない | <> |
比較演算子を使って、後述の条件式をつくっていきます。
それでは条件分岐の記述方法を見ていきます。
条件分岐には
1.条件に一致したときだけ処理を行う。
2.条件に応じて処理を変える。
3.複数の条件に応じて処理を行う。
の方法があります。
1つずつ見ていきましょう。
(例)
試験結果で「合否判定」を行うマクロを作成します。
実際にコードを記入し、「F8」でステップインして動きを確認しましょう。
問題
条件に一致したときだけ処理を行う。
(式)
If 条件式 Then
処理内容
End If
条件式に一致した場合は、処理内容のコードに入り処理を行います。
不一致の場合は処理をせずに、次のコードに飛ばされます。
Sub 判定1() 'Aの3教科の合計が240点以上なら合格 If Range("E4").Value >= 240 Then Range("F4").Value = "合格" End If End Sub
実行結果
条件に応じて処理を変える。
(式)
If 条件式 Then
処理内容A
Else
処理内容B
End If
条件式に一致した場合に処理内容Aの処理を行います。
不一致の場合は、処理内容Aはスルーし処理内容Bの処理を行います。
Sub 判定2() Bの3教科の合計が240点以上なら合格。以下なら不合格 If Range("E5").Value >= 240 Then Range("F5").Value = "合格" Else Range("F5").Value = "不合格" End If End Sub
実行結果
複数の条件に応じて処理を行う。
(式)
If 条件式A Then
処理内容A
ElseIf 条件式B
処理内容B
・
・
Else
処理内容C
End If
条件式Aに一致した場合は処理内容Aを行います。
条件式Bに一致した場合は処理内容Bを行います。
これを繰り返し、どの条件式にも一致しない場合は、処理内容Cを行います。
Sub 判定3() If Range("E6").Value >= 240 Then Range("F6").Value = "素晴らしい!" ElseIf Range("E6").Value >= 210 Then Range("F6").Value = "もう少し頑張ろう。" Else Range("F6").Value = "もっと頑張ろう。" End If End Sub
実行結果
If文の条件が2つ以上ある場合
条件式が2つ以上設定する必要がある場合には、論理演算子を使います。
具体的には「Or」や「And」を指します。
「Or」とは、AかBのどちらかが条件に一致すればTrueを返し、どちらも不一致の場合はFalseを返す方法です。
「And」とは、AもBも条件に一致すればTrueを返し、どちらか一方が不一致ならFalseを返す方法です。
(例)
If 条件式A or 条件式B Then
のような記述をします。
ネスト(入れ子)を使った記述方法
If文でネストを使うことにより、より複雑な条件分岐をすることが可能です。
この場合のネストとは、If分の中にさらにIf文を記述していくことです。
(例)
Sub ネスト() If 条件式A Then If 条件式B Then 処理内容A Else 処理内容B End If End IF End Sub
今回はIfステートメントを使った条件分岐の記述方法を見てきました。
最後まで目を通していただきありがとうございます。