一度に複数の条件判断を行う(If..ElseIf)
If 文を使った条件分岐では 1 つの条件式で True か False かで処理を分けるだけでなく、複数の条件式を使って一つの If 文の中でより複雑な条件分岐を記述することができます。ここでは Excel VBA で一度に複数の条件分岐を行う方法について解説します。
(Last modified: )
一度に複数の条件判断を行う
Excel VBA で If
文で一度に複数の条件式を指定する場合は次の書式を使用します。
If 条件式1 Then 条件式1がTrueの時に行う処理 ElseIf 条件式2 Then 条件式2がTrueの時に行う処理 ElseIf 条件式3 Then 条件式3がTrueの時に行う処理 Else いずれの条件式もFalseの時に行う処理 End If
If
のあとに最初の条件式を記述します。この条件式が「True」だった場合は Then
から最初の ElseIf
までの処理を行い、終わったら IF
文の次の処理へ移ります。
最初の条件が「False」だった場合は 2 つ目の条件式を評価し、「True」だった場合は Then
のあとの ElseIf
から次の ElseIf
までの処理を行い、終わったら IF
文の次の処理へ移ります。
同じように記述した条件式の数だけ繰り返します。最後にすべての条件式が「False」だった場合に Else
から End If
までの処理を実行します。この部分は省略しても構いません。
どこかの条件式が「True」になった場合は、そのあとに記述された処理を実行したあと If
文の次の処理へ移る点に注意してください。一度「True」になった場合はそれ以降の条件式は評価されません。また複数の条件式を記述する場合は上から順に評価されていきますので、記述する順番もご注意ください。
なお If
文で実行する処理の中に別の If
文を記述してより複雑な条件分岐を行うこともできます。詳しくは「If文の中にIf文を記述する」を参照されてください。
それでは簡単なサンプルを作成してみます。
Option Explicit Sub テスト() Dim result As Integer result = Range("B2").Value If result > 70 Then MsgBox "合格です" ElseIf result > 50 Then MsgBox "追加レポートが必要です" Else MsgBox "不合格です" End If End Sub
B2 セルの値を取得し、最初の条件式で 70 よりも大きいかどうかを調べ、次の条件式で 50 よりも大きいかどうかを調べます。それでは最初にワークシートの B2 セルに 64 と入力しました。
先ほどのプログラムを実行します。
今回は B2 セルの値が 70 よりも小さいので最初の条件式は「False」となりますが、 50 よりも大きいので次の条件式は Trueとなります。そのため ElseIf
から Else
までの処理が実行されます。
次にワークシートの B2 セルの値を 45 に変更し、再度プログラムを実行してみました。今度は 2 つの条件式がどちらも「False」となるため Else
から End If
までの処理が実行されました。
このように If..ElseIf
文を使用することで、複数の条件式を使ったより複雑な条件分岐を行うことができます。
-- --
Excel VBA で一度に複数の条件分岐を行う方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。