
VBAにおけるifとは?if文の基本的な構成や条件分岐処理の方法
VBAで条件によって処理を変えるマクロを組む場合、if文を利用します。
ここでは、VBAにおけるif文の使い方について解説しております。
if文のソースコードや利用する演算子について知りたい方はぜひ参考にして下さい。
1.VBAにおけるifとは
1-1.ifの役割
VBAでは、if文を使うことにより条件によって処理を変えるマクロを作成することが出来ます。例えば、以下のようなマクロを組むことが出来ます。
例
ある値が70以上であれば、メッセージボックスに<合格>と表示され、それ以外であれば、
<不合格>と表示される。
1-2.if文の基本的な構成
if文の基本的な構成は以下の通りです。
If 条件式 then
①:条件式が真の場合
Else
②:条件式が偽の場合
End If
初めに<If>と入力し、スペースを1つ開けて条件式を入力する。またスペースを1つ空けて<then>と入力します。次に条件満たす場合の処理(=①)を入力します。その後、Elseと入力し、条件を満たさなかった場合の処理(=②)を入力します。最後にEnd Ifと入力します。条件式が真であれば、①の処理が実行され、②の処理は実行されません。条件式が偽の場合、②の処理が実行され、①の処理は実行されません。
if文を構成するためには、条件式で使われる”演算子”について理解する必要があります。次の章でif文を構成するための演算子について説明します。
2.演算子
条件式を書くためには”演算子”を理解しなければなりません。演算子は、大きく分けて2種類あります。[比較演算子]と[論理演算子]です。以下は、if文の条件式で使われる演算子についてまとめた表になります。
記号 | 意味 |
== | 値が等しければ真 |
<> | 値が等しくなければ真 |
> | 値が大きければ真 |
< | 値が小さければ真 |
>= | 値が同じか大きければ真 |
<= | 値が同じか小さければ真 |
And | どちらとも真の場合、真 |
Or | どちらかが真の場合、真 |
Not | 条件式が偽の場合、真 |
では、各演算子の意味と使い方について説明します。
2-1.比較演算子
2-1-1.“==”、”<>”の使い方
“==”の演算子を活用する事で特定の値のみに動作するマクロを組む事ができます。例えば、ある値(=value)が100の時だけ、メッセージボックスに、「満点です」と表示されるマクロを組む場合、以下のようになります。
If value = 100 then MsgBox "満点です" Else End If
”<>”の演算子は、値が異なるときに①の処理が実行され、それ以外の時に②が実行されます。そのため、上記スクリプトの”==”を”<>”に置き換えた場合、valueが100の時だけ、メッセージボックスが表示されないようになります。
2-1-2.“>”、”>=”の使い方
“>”および”>=”の演算子は、値が比較対象より大きい時に真の処理が実行されます。この2つの演算子の違いは、値が等しい場合の条件式を真とするか偽とするかにあります。“>”を使った場合、値が等しいと条件式は偽になります。
“1-1”の(例)をコードにすると以下のようになります。
If value >= 70 then MsgBox "合格" Else MsgBox "不合格" End If
”>=”を”>”にすると、value=70の場合はメッセージボックスに”不合格”と表示されます。
2-1-3.“<”,”<=”の使い方
“>”および”>=”の演算子は、値が比較対象より小さい時に真の処理が実行されます。この2つの演算子の違いも、値が等しい場合の条件式を真とするか偽とするかにあります。“<”を使った場合、値が等しいと条件式は偽になります。
以下は、ある値(=value)が69以下の場合、メッセージボックスに”不合格”と表示され、69より値が大きければ、メッセージボックスに”合格”と表示されるif文になります。
If value <= 69 then MsgBox "不合格" Else MsgBox "合格" End If
”<=”を”<”にすると、value=69の場合はメッセージボックスに”合格”と表示されます。
2-2.論理演算子
2-2-1.“And”の使い方
Andは、複数の条件式を使いたいときに利用します。この演算子を使ったif文は以下の様な構成になります。
If 条件式1 And 条件式2 then
①:条件式1および2が真の場合
Else
②:条件式1および2のどちらかが偽の場合
End If
条件1及び2がどちらとも真のときのみ①に記載されている処理が実行されます。どちらかが偽の場合は②の処理が実行されます。以下は、ある値(=value1)が70以上かつ別の値(=value2)が70以上であれば、メッセージボックスに”合格”と表示され、どちらかの値が70未満であればメッセージボックスに”不合格”と表示されるif文になります。
If value1 >= 70 And value2 >= 70 then MsgBox "合格" Else MsgBox "不合格" End If
2-2-2.“Or”の使い方
OrもAndと同じく複数の条件を使いたいときに利用します。この演算子を使ったif文は以下の様な構成になります。
If 条件式1 or 条件式2 then
①:条件式1または2のどちらかが真の場合
Else
②:条件式1および2のどちらとも偽の場合
End If
条件式1および2のどちらか1つでも真のときに①に記載されている処理が実行されます。どちらとも偽であれば②の処理が実行されます。“2-2-1”で紹介したif文のAndをOrに置き換えると、ある値(=value1)が70以上、または別の値(=value)が70以上であれば、メッセージボックスに”合格”と表示され、どちらとも70未満であればメッセージボックスに”不合格”と表示されるif文になります。
2-2-3.“Not”の使い方
この演算子を使うと条件式が偽であるときに真の処理が実行され、条件式が真であるときに偽の処理が実行されます。if文の構成は以下の通りです。
If Not 条件式 then
①: 条件式が偽の場合
Else
②:条件式が真の場合
End If
これまでのif文とは異なり、条件を満さない時に①に記載されている処理が実行されます。“1-1”の(例)をNotで表現すると以下の様なif文になります。
If Not value >= 70 then MsgBox "不合格" Else MsgBox "合格" End If
3.複雑な条件分岐について
Else Ifやネストを使うことで複雑な条件分岐をもつif文を作ることが出来ます。※ネスト(=入れ子)とは、if文の中にさらにif文を入れることを指します。
先にElse Ifを紹介します。Else Ifを使ったif文の構成は以下の通りです。
If 条件式1 then
①:条件式1が真の場合
Else If 条件式2 then
②:条件式1は偽で条件式2が真の場合
Else
③条件式1及び2がどちらとも偽だった場合
End If
上記の通り、複数の条件分岐を組み合わせることが出来ます。以下は、ある値(=value)が80以上で”優”、60以上で”良”それ以外で”不合格”とメッセージボックスに表示されるif文になります。
If value >= 80 then MsgBox "優" Else If value >= 60 then MsgBox "良" Else MsgBox "不合格" End If
次にネストを使った方法の紹介をします。ネストを使ったif文の構成は以下の通りです。
If 条件式1 then
①:条件式1を満たす場合の処理
If 条件式2 then
③:条件式1および2を満たす場合の処理
Else
④:条件式1は満たしているが、条件式2は満たさなかった場合の処理
End If
Else
②:条件式1を満たさなかった場合の処理
End If
Else Ifで紹介したマクロをネストで表現すると以下の通りになります。
If value >=60 then If value >= 80 then MsgBox "優" Else MsgBox "良" End If Else MsgBox "不合格" End If
Else Ifやネストを使うことでより細かい条件分岐を行うことが出来ますが、分岐を多くしすぎると後の編集や他の人との共有が困難になるので要注意です。
4.まとめ
if文を理解することで、マクロで出来ることが大幅に増えます。ぜひ、ここで得られた知識をご活用ください。
コメント