ExcelVBAでプログラミングをしていくと、ある条件の時だけ「処理を実行したい」や「内容を変更したい」等の分岐判定を行いたいケースがあります。そのような場合は、IF文を使用する事で処理を分岐させる事ができるようになります。今回はIF文の使い方について紹介します。
構文
記述方法は以下の様になります。
If[条件式]Then
[処理①]
Else
[処理②]
End If
[説明]:
条件で処理を分岐させるために使用します。処理の分岐とは「もし◯◯なら△△を行い、そうでなければ◇◇を行う」と言った処理のことを指します。
[条件式] | 分岐させる条件を記述します。 ※以下の「比較演算子」や「論理演算子」を用いて記述します。 |
[処理①] | [条件式]に一致した場合に実行する処理を記述します。 |
[処理②] | [条件式]に不一致の場合に実行する処理を記述します。 |
比較演算子 | 演算名 | 使用例 | 結果 |
= | 等しい | 1=2 | ×(不一致) |
<> | 等しくない | 1<>2 | ○(一致) |
> | 大きい | 1>2 | ×(不一致) |
< | 小さい | 1<2 | ○(一致) |
>= | 以上 | 1>=2 | ×(不一致) |
<= | 以下 | 1<=2 | ○(一致) |
論理演算子 | 使用例 | 内容 |
And | A And B | AとBの両方を満たした場合 |
Or | A Or B | A又はBのいずれかを満たした場合 |
Not | Not A | Aに当てはまらない場合 |
使い方
使い方について具体的に説明します。
分岐する条件が1つの場合の記述方法
分岐する条件が1つの場合について、以下画面を元に説明していきます。
[画面]:
※<合否判定>ボタンには、以下のプログラミング例が登録されています。
[プログラミング例]:
Sub 合否判定()
If Range("A2") >= 80 Then
MsgBox "合格です!"
Else
MsgBox "不合格です!"
End If
End Sub
内容は、
・A2セルが80以上ならば、「合格です!」を
・A2セルが80未満ならば、「不合格です!」を
MsgBoxで表示するとの意味になります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
(例1)A2セルに90を入力し、<合否判定>ボタンをクリックします。
(例2)A2セルに60を入力し、<合否判定>ボタンをクリックします。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
分岐する条件が1つの場合の記述方法のついての説明は以上です。
分岐する条件が複数の場合の記述方法
分岐する条件が複数の場合について、以下画面を元に説明していきます。
※分岐条件の中に更に分岐条件がある場合の説明となります。
[画面]:
※<合否判定>ボタンには、以下のプログラミング例が登録されています。
[プログラミング例]:
Sub 合否判定()
If Range("A2") >= 80 Then
If Range("B2") = "男" Then
MsgBox "合格です!"
Else
MsgBox "不合格です!"
End If
Else
If Range("B2") = "女" Then
MsgBox "合格です!"
Else
MsgBox "不合格です!"
End If
End If
End Sub
内容は、
・A2セルが80以上でB2セルが男の場合、「合格です!」を
・A2セルが80以上でB2セルが男以外の場合、「不合格です!」を
・A2セルが80未満でB2セルが女の場合、「合格です!」を
・A2セルが80未満でB2セルが女以外の場合、「不合格です!」を
MsgBoxで表示するとなります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
(例1)A2セルに90、B2セルに男を入力し、<合否判定>ボタンをクリックします。
(例2)A2セルに90、B2セルに女を入力し、<合否判定>ボタンをクリックします。
(例3)A2セルに60、B2セルに女を入力し、<合否判定>ボタンをクリックします。
(例4)A2セルに60、B2セルに男を入力し、<合否判定>ボタンをクリックします。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
分岐する条件が複数の場合の記述方法についての説明は以上です。
論理演算子を用いた分岐条件の記述方法
論理演算子を用いた分岐条件について、以下画面を元に説明していきます。
[画面]:
※<合否判定>ボタンには、以下の各々のプログラミング例が登録されています。
■Andを使用した場合
[プログラミング例]:
Sub 合否判定()
If Range("A2") >= 80 And Range("B2") = "男" Then
MsgBox "合格です!"
Else
MsgBox "不合格です!"
End If
End Sub
内容は、
・A2セルが80以上でB2セルが男の場合、「合格です!」を
・上記以外の場合、「不合格です!」を
MsgBoxで表示するとなります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
(例1)A2セルに90、B2セルに男を入力し、<合否判定>ボタンをクリックします。
(例2)A2セルに60、B2セルに男を入力し、<合否判定>ボタンをクリックします。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
Andを使用した場合の説明については以上です。
■Orを使用した場合
[プログラミング例]:
Sub 合否判定()
If Range("A2") >= 80 Or Range("B2") = "男" Then
MsgBox "合格です!"
Else
MsgBox "不合格です!"
End If
End Sub
内容は、
・A2セルが80以上又はB2セルが男の場合、「合格です!」を
・上記以外の場合、「不合格です!」を
MsgBoxで表示するとなります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
(例1)A2セルに90、B2セルに女を入力し、<合否判定>ボタンをクリックします。
(例2)A2セルに60、B2セルに女を入力し、<合否判定>ボタンをクリックします。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
Orを使用した場合の説明については以上です。
■Notを使用した場合
[プログラミング例]:
Sub 合否判定()
If Not Range("B2") = "男" Then
MsgBox "合格です!"
Else
MsgBox "不合格です!"
End If
End Sub
内容は、
・B2セルが男で無い場合、「合格です!」を
・上記以外の場合、「不合格です!」を
MsgBoxで表示するとなります。
※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。
[実行例]:
(例1)B2セルに女を入力し、<合否判定>ボタンをクリックします。
(例2)B2セルに男を入力し、<合否判定>ボタンをクリックします。
[サンプル]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
Notを使用した場合の説明については以上です。
プログラミング(サンプル)
プログラミング事例を紹介します。
おわりに
IF文はプログラミングをする上で必ず使用する構文となります。適材適所で使用してもらえれば、より読みやすく・綺麗なコーディングが書けるようになります。是非活用してみて下さい。