
IFの基本的な使い方から、エクセルVBAでよく使う記述の実例を挙げながら説明します。
僕が作るマクロでIFが入っていないのはないんじゃないか。と思うくらいすべての作成の基本となるのが、IFです。
すべの基本となるので、ある程度ロジックは知っておいた方が良いと思うんですが、IF自体は非常に単純ですので、安心して勉強していきましょう。
VBAの基本は、IFから始まる!
細かい話をいろいろとしても、イメージがつかないと思うので、構文をまずは見てください。
1 2 3 4 5 6 7 8 9 |
IF 条件式1 Then 処理1 '条件式1がTrueだったら、処理1を実施。 ElseIF 条件式2 Then 処理2 '条件式1がFalseで、条件式2がTrueだったら、処理2を実施。 Else 処理3 ’条件式1と条件式2がFalseだったら、処理3を実施 EndIF |
IFの文法は、IFとElseIFとElseを覚えておけばOK
IFには3つの分岐があります。IFとElseIFとElseですが、それぞれに特徴があります。
上記のコードを日本語で読み上げてみると、
「もし、条件式1だったら、処理1を実施してください。
もしくは条件式2だったら、処理2を実施して下さい。
どれでもなければ、処理3を実施してください。以上です。」となります。
End IFは絶対に忘れるな!
End IFとは、文章でいう句読点の。と同じ意味です。つまり、「IFは終わりました!!!」と宣言しているのがEnd IFです。
IFを書いたらすぐにEnd IFも書いておくと便利です。
IFの雰囲気をつかんでくれていると嬉しいです。次は、条件式で使用する論理演算子と比較演算子を勉強してみましょう。
IFは、もし
ElseIfはもしくは
Elseは、どれでもない
EndIfは、はい!おわりました
IFの条件式で使用する演算子
IFの論理演算子
論理演算子 | 内容 |
---|---|
Or | AかBのどちらか一方がTrueの値を返す。 |
And | AとBのどちらともTrueの場合のみ、Trueの値を返す。 |
Not | AがTrueの場合、Falseの値を返す。AがFalseの場合、Trueの値を返す。 |
IFの比較演算子
比較演算子 | 内容 |
---|---|
A < B | AはBより小さい |
A <= B | AはB以下 |
A > B | AはBより大きい |
A >= B | AはB以上 |
A = B | AとBは同じ |
A <> B | AとBは違う |
IFを使った例題
通常のIFとElseIfとElseについての例題
IfのVBAコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Public Sub IF_sample1() Dim Nenrei As Integer Nenrei = InputBox("年齢を入力してください") If Nenrei >= 60 Then '条件式1 MsgBox "還暦" '処理1 ElseIf Nenrei > 19 Then '条件式2 MsgBox "成人" '処理2 Else 'それ以外 MsgBox "未成年" '処理3 End If End Sub |
Ifの文章では基本的なものだ。数値が一番示しやすいので、上記は数値の以上やより大きいなどを使っている。
条件式に入れる比較演算子のイメージがわかってくれると嬉しい。
結果

論理演算子のAndの使い方
IfでAndを使ったコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Public Sub IF_sample2() Dim Tokuten As Integer Tokuten = InputBox("得点の入力をしてください。") If 100 < Tokuten Then MsgBox "総得点を超えています。" ElseIf 80 < Tokuten And 100 >= Tokuten Then MsgBox "" ElseIf 60 < Tokuten And 80 >= Tokuten Then MsgBox "" ElseIf 30 < Tokuten And 60 >= Tokuten Then MsgBox "" ElseIf 30 >= Tokuten Then MsgBox "" End If End Sub |
Andの書き方はちゃんと覚えましょう。条件式をAndでくっつけるんです。
この条件式と、この条件式が満たされているのであれば、処理に進む。
結果

論理演算子のOrの使い方
IfでOrを使ったコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Public Sub IF_sample3() Dim strName As String strName = InputBox("私が好きな果物は何でしょう?カタカナで書いてください。") If strName = "パイナップル" Or strName = "リンゴ" Then MsgBox "正解!!!" Else MsgBox "不正解" End If End Sub |
結果

僕はNotを使わない
Notとは、Trueと返す式を書いていたとしても、Falseで返すのが機能です。
このNotを使うと可読性がいちじるしく低下します。VBAの可読性って覚えているうちは気にしなくて良いんですが、そのエクセルの更新を5年後にやったとしたらどうでしょうか?
可読性は高いのに越したことはありませんが、これは個人の意見です。その点はご留意ください。あなたが決めたルールが一番やりやすいです。
僕が論理演算子のNotをIFの文で使わない理由
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Public Sub IF_sample4() Dim str As String str = InputBox("今回の形は何になるのか?") If Not str = "三角" Then MsgBox "不正解" Else MsgBox "正解" End If End Sub |
可読性に関してイメージしてもらえればうれしいです。上記のコードを回して、三角と打ち込んだらどうなりますか?また、四角と打ち込んだらどうなりますか?
可読性が下がり、のちの自分の首を絞める。ただし、個人差があるので自由に!
結果

IFで何もしない!はわざわざ言わなくて良い
何もしないのは、条件式にすら反映させなければ済みます。
たまに、質問箱とかで見受けるんですが、何もさせない。と何もしないで待たせる。は別です。
待たせる方法はたくさんあります。別記事となりますが、準備中です。
まとめると
IFは、VBAを書く上で欠かせないコードの一つです。しっかりと、基本を固めておきましょう。
また、できる限り自分なりのルールは決めておいた方が良いと思います。ルールをいったん決めて、そこからやってみていろいろと実験してみてください。
プログラミング言語は、たくさんありますが僕はVBAをやって本当に良かったと思っています。ぜひご活用ください。