#5_1 If...Then...Elseステートメント
条件分岐
VBAでマクロを構築する上で、条件分岐は文法上の大きな山場であり、最重要項目です。
中でも最もシンプルで最も実用性の高い「If...Then...Else」ステートメントから学びましょう。
極論を言えばこのステートメントだけで全ての条件分岐を実現できます。
単一の条件判断
まずは基本中の基本である「もし条件Aなら処理Bを行え」という条件が1つの場合を示します。これはシンプルに次のように表せます。
End Ifを忘れないようにしましょう。
また、条件が1つだけの場合に限り、以下のような記述もできます。
こちらはEnd Ifを記述する必要がないのですが、条件が1つの時にしか使えない上に初心者は混乱してしまう危険性があるので、しばらくは上の表記方法でマクロを書くようにしてください。
複数の条件判断
Ifステートメントは当然複数の条件を判断することも可能です。
下のマクロのように、ElseIfを増やすことで条件を増やしていくことができ、何の条件にも該当しない場合には最後にElse説でその場合の処理を記述すれば良いです。
比較演算子を用いた条件分岐
数値を利用した条件分岐、例えば「90点以上なら優」「60点未満なら不可」というような分岐処理を行いたい場合、比較演算子を使います。
主な比較演算子を次の表にまとめました。
比較演算子 | 例 | 意味 |
---|---|---|
= | If Cells(1,1) = 80 | もし(A1セルの値が)80と等しければ |
> | If Cells(1,1) > 80 | もし(A1セルの値が)80より大きければ |
< | If Cells(1,1) < 80 | もし(A1セルの値が)80より小さければ |
>= | If Cells(1,1) >= 80 | もし(A1セルの値が)80以上ならば |
<= | If Cells(1,1) <= 80 | もし(A1セルの値が)80以下ならば |
<> | If Cells(1,1) <> 80 | もし(A1セルの値が)80でなければ |
論理演算子Andを用いた条件分岐
次に、「もし条件AがBで、条件CがDだったら処理をする」といった、同時に複数の条件を判断して処理を分岐したい場合には、論理演算子を使います。まず紹介するのはは論理積を記述するAnd演算子です。
And演算子で連結されたIfステートメントでは、個々の条件がすべて満たされた場合のみTrueが返され、Thenキーワード以降のステートメントが実行されます。
論理演算子Orを用いた条件分岐
論理演算子の2つ目はOr演算子です。これは個々の条件のいずれかが満たされていればTrueが返され、Thenキーワード以降のステートメントが実行されます。
(応用)TrueとFalseの省略
条件分岐の中で、その条件がTrueかFalseを判定するIfステートメントだった場合、「=True」や「=False」は次のように省略することもできます。
最初のうちは中々使いこなせないかもしれませんが、少なくとも他者のマクロを見た時にこの記述があった時はTrueやFalseが省略されているという事は理解できるようにしましょう。