Excelマクロ(VBA)で【IF文】の使い方・記述方法、基本と応用【If Then Else】
Sub IF_サンプル()
a = 1
If a = 1 Then
b = "a = 1 です"
ElseIf a = 2 Then
b = "a = 2 です"
Else
b = "a は「1」でも「2」でもありません。"
End If
MsgBox b
End Sub
Excelの関数では、よく使う「IF」文での条件分岐構文ですが、マクロでも「IF」文はよく使います。
VBAの「IF」文のサンプルコードとともに解説していますので、ご覧ください。
VBAでの条件分岐は「IF」文だけではなく、「Select Case」でも可能です。
「Select Case」については、こちら()で紹介しています。*****
エクセル 関数の「IF」文をおさらいしたい方は、こちらをご覧ください。
今回は、エクセル マクロ「IF」文で基本の「条件分岐」、応用で「複数条件指定」するなどの使い方について、記載したいと思います。
< ---目次--- >
◆IF文とは
IF文とは、指定した条件を満たす場合と満たさない場合で処理を分けることができます。
IF文は、いわゆる条件分岐可能です。
もう少し砕いて説明しますと
Aの時は、Xの処理
Bの時は、Yの処理
というような処理ができます。
VBAのIF文を実際にやってみた方が、理解しやすいと思います。
◆基本編
・基本構文
Excelのマクロの基本である「IF」文の使い方は「IF 条件式 Then」という形になっています。
「IF」から始まり、条件式を入力し、「Then」で終わり、改行して「End If」と記述すれば
「IF」文の完成です。
条件式は、一般的には、比較演算子を使い、「True(正しい)」、又は、「False(正しくない)」どちらかの結果が出るものを指します。
条件式 = True
If 条件式 Then
’上記のIf 条件式が True の場合
End If
VBAでは、「If 条件式 Then」から「End If」の間に記述された内容が「条件式」が「True」の時のみ実行される処理になります。
・条件式
基本的に、条件式には「比較演算子」を使用します。
◆応用編
エクセルマクロ「IF」文の応用や豆知識等を紹介します。
「ElseIf」
VBAで「ElseIf」の使い方を解説します。
意味が同じような感じだけど、結果が違う時で、処理を分岐したいという時に使います。
通常の「IF 条件式 Then」を記述した後に、「ElseIF 条件式 Then」と記述すれば、さらに、条件を追加することができます。
「ElseIF」と「IF」の間にはスペース(空白)はないので注意してください。
a = 1
If a = 1 Then
’上記 If 条件式が True の場合
ElseIf a = 2 Then
’上記 If 条件式が False で上記 ElseIf の条件式が True の場合
End If
「Else」
VBAで「Else」の使い方を解説します。
どの条件にも当てはまらない時にも何か処理したいって時に使います。
「IF」文の中のどの条件式にも当てはまらない時の処理を実行したい時は
「Else」とだけ記述した後に、実行したい処理を書いてください。
a = 1
If a = 1 Then
’上記 If 条件式が True の場合
ElseIf a = 2 Then
’上記 If 条件式が False で上記 ElseIf の条件式が True の場合
Else
’上記 条件式がすべて False の場合
End If
「IF」文の条件式を複数指定する
VBAの「IF」文で条件式を複数指定する方法を解説します。
「IF」文の条件式の中で複数指定するには
論理演算子と呼ばれる「And」や「Or」、「Not」を使用します。
・「And」
「IF」文における「And」は、2つとも条件成立なら、という意味になります。
例として、条件Aと条件Bが成立(True)なら実行する形になります。
・「Or」
「IF」文における「Or」は、2つの内どちらかが条件成立なら、という意味になります。
例として、条件Aと条件Bどちらかが成立(True)なら実行する形になります。
・「Not」
「IF」文における「Not」は、否定を表しますので
条件Aではないという意味になります。
ややこしくなることがあるので、基本は使用しない事が多いです。
例外はありますが。
・組み合わせて使用時の注意点
「IF」文の条件式の中で複数の条件を指定したい時は、条件式毎に、下記のように「And」や「Or」を記述します。
もちろん、両方、組み合わせて使うことも可能ですが
「パターンC」の「ElseIf x = 1 And y = 1 Or z = 1 Then」のような記述については
注意が必要です。
この場合は、「x と y が 1 か z が 1 」の時と勘違いしやすいですが
「x が 1 で、y か z が 1 」の時となります。
「x と y が 1 か z が 1 」という条件にしたい時は
「パターンD」のようにかっこをつける必要があります。
If x = 1 And y = 1 Then ’パターンA
’x と y が 1 の時
ElseIf x = 2 Or y = 2 Then ’パターンB
’x と y が 2 の時
ElseIf x = 1 And y = 1 Or z = 1 Then ’パターンC
’x が 1 で、y か z が 1 の時
ElseIf (x = 1 And y = 1) Or z = 1 Then ’パターンD
’x と y が 1 か z が 1 の時
End If
「IF」文の省略記述方法(裏技)
マクロでの「IF」文はこのように「End IF」を省略して「Then」の後に、条件分岐後の処理を記述することもできます。
If a = 1 Then x = 1
「x=1」が条件分岐後の処理文です。
個人的に、1行しかない、処理文であれば、可読性も良くなり、見やすいです。
—余談—
~豆知識~
少し、ややこしく対して覚える必要もないと思いますが、一応、紹介します。
上部の基本編で「一般的に」といったのは、Boolean型の変数で値が格納されているものには演算子はいらないなどの例外があるからです。
他にも、条件式に記述した処理結果が、「True」か「False」であれば、問題ないです。
比較演算子を使った場合も、処理結果が、「True」か「False」で同じですよね。
そういうことです。
◆まとめ
簡単のようで、深く掘り下げると色々、ありますよね。
そんなに難しくはないと思います。
「IF」を使う時に「ElseIf」や「And」、「Or」を使いすぎると、可読性が悪くなったりするので
ほどほどにしましょう。
条件式の比較対象が同じ場合は「Select Case」文も使いましょう。
可読性が上がります。
最新 文房具・オフィス用品 の 売れ筋ランキングはこちら