LoginSignup
5

More than 5 years have passed since last update.

【VBA入門】If文で条件分岐を行う方法

Posted at

※こちらの記事は、プロスタ編集部が現在大変人気の高いVBAのコーディング記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。
参考サイト:【VBA入門】If文で条件分岐を行う方法

【VBA入門】If文で条件分岐を行う方法

If文で条件分岐を行う方法についてご説明します。Ifを使用するとコードの流れを変更することが可能になるのでより柔軟な状況に対応できるプログラムを作成することができます。

<pre class="lang:default decode:true ">If 条件式 Then
        条件を満たした場合に実行するコード
End If</pre>

目次
1 If文で条件付けを行う
1.1 Elseで条件に満たなかった場合の処理を実施
1.2 If文を入れ子にする
2 条件式の論理演算子
2.1 AND(論理積)による条件の結合
2.2 OR(論理和) による条件の結合
2.3NOT(論理否定)による条件設定
2.4 複数の論理演算子による複合的な条件の結合
3 まとめ

If文で条件付けを行う

If Range("A1") <= 6 Then
         MsgBox "上半期のシートです。"
End If

<実行例>
VBA1.png

Elseで条件に満たなかった場合の処理を実施

If文に続けてElseを記述することにより、条件式に適合しなかった場合の処理を行うことができます。

If Range("F4") >= 20 Then
            MsgBox "ご購入ありがとうございます。"
Else
            MsgBox "20歳未満の方にはご購入できない商品が含まれています。"
End If

<実行例>
VBA2 .png

また、Else文の後にIfで条件を記述することもできます。

If 年齢 >= 20 Then
            MsgBox "選挙権があります。"
ElseIf 年齢 >= 18 Then
            MsgBox "2016年夏より投票することができます。"   '年齢が20未満かつ18以上の場合'
Else
        MsgBox "選挙権がありません。"   '年齢が18未満の場合'
End If

If文を入れ子にする

If文の中にIf文を記述することもできます。この場合入れ子になったIf文中のコードは外側のIf文の条件も満たしている場合に実行されます。

If Range("B2") >= 4 Then
            If Range("E4") = "男" Then
                    MsgBox "高学年の男子です。"
            Else
                    MsgBox "高学年の女子です。"
            End If

Else
            MsgBox "低学年生です。"
End If

<実行例>
VBA3 .png

なお、If文を多重にするとコードが見づらくなるのでTabキーなどで適宜字下げを行うと良いでしょう。

条件式の論理演算子

If文に2つ以上の条件を設定する方法についてご説明します。
複数の条件を設定することができればデータの抽出・加工をする際に非常に便利です。
それでは詳しい方法について確認していきましょう。

AND(論理積)による条件の結合

2つの条件の間をANDでつなげることにより、両方の条件を満たしている場合にコードが実行されます。

If IsDate(Range("C4")) And Range("D4") = "第二回" Then  'セルに入力された値が日付であり、かつ備考欄が第二回の場合'
    MsgBox "第二回の受講が可能です。"
End If

<実行例>
VBA4.png

OR(論理和) による条件の結合

2つの条件の間をORでつなぐことにより、どちらかの条件を満たしている場合にコードが実行されます。

If Range("C7") = "土" Or Range("C7") = "日" Then    'セルに入力された値が土曜または日曜の場合'
     MsgBox "休日です。"
 Else
     MsgBox "平日です。"
 End If

<実行例>
VBA5 .png

NOT(論理否定)による条件設定

条件の左にNOTを指定すると、条件を満たしていない場合にコードが実行されます。

If Not IsDate(Range("C4")) Then    'セルに入力された値が日付ではない場合'
    MsgBox "免許を取得していません。"
Else
    MsgBox "免許取得日:" & Range("C4")
End If

<実行例>
VBA7.png

複数の論理演算子による複合的な条件の結合

論理演算子を複数組み合わせて複雑な条件式を作成することも可能です。

If Range("C5") >= 10 And Not Range("D5") = "セット対象外" Then '在庫が10以上であり、かつ備考欄がセット対象外ではない場合'
    MsgBox "10個セット販売が可能です。"
End If

<実行例>
VBA6 .png

まとめ

If文を使用すると複雑な条件に対応したコードを記述できるようになります。また意図しない動作を行わないために条件設定に漏れが無いか事前に検討しておくことも非常に大切です。
AND・OR・NOTの3つの論理演算子により様々な条件を設定することができますが、コードが読みづらいとメンテナンスが困難になりミスを誘発する原因にもなります。必要な箇所はコメントを記述し、意図が分かりやすいコードとなるよう心掛けましょう。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5