VBA 条件分岐 if文の使い方

今回は、VBAのif文の使い方についてみていきましょう。
if文とは、プログラム上で条件によって処理を変更したい時に使用する文法です。
それでは早速例を見ていきましょう。

基本的なif文の使い方

まずは、一番基本となる使用方法を見ていきます。

If 条件 Then
    処理
End If

例として、セル(1,1)に「1」が入力されている時にセル(1,2)に「値は1です」と表示するプログラムを作成しました。

If Cells(1, 1).Value = 1 Then
    Cells(1, 2).Value = "値は1です"
End If

結果

値が1の時に、「値は1です」の文字が表示されたと思います。
「条件」の部分や「処理」の部分をやりたい処理に置き換えて利用してみましょう。

複数条件の使い方

複数条件の使い方についてみていきましょう。
複数条件を使うには、「Or」「And」を使用していきます。

Or条件

Or条件は、複数条件の内どれか1つでも満たしたときに処理を実行します。
値が「10」もしくは「100」の時、「値は10もしくは100です」を表示するプログラムを作成してみましょう。

Private Sub btnIf_Click()

    '初期化
    Cells(1, 2).Value = ""

    '条件分岐 Or文
    If Cells(1, 1) = 10 Or Cells(1, 1) = 100 Then
        Cells(1, 2).Value = "値は10もしくは100です"
    End If

End Sub

結果

And条件

And条件は、複数条件の内、全ての条件を満たしているときに処理を行います。
条件が「10以上」かつ「100未満」の場合、「10以上かつ100未満の値です」と表示するプログラムを作成してみましょう。

Private Sub btnIf_Click()

    '初期化
    Cells(1, 2).Value = ""

    '条件分岐 And文
    If Cells(1, 1).Value >= 10 And Cells(1, 1).Value < 100 Then
        Cells(1, 2).Value = "10以上かつ100未満の値です"
    End If

End Sub

結果

複数条件分岐

続いて、複数の条件分岐についてみてみましょう。
if文を何度も記載してもできるのですが、簡潔に書くことができるようになるので、押さえておきましょう。

ElseIf文

ElseIf文を使用することで複数の条件分岐を記載することができるようになります。
例として
①値が「1」のとき、「値は1です」と表示する。
②値が「10未満」のとき、「10未満の値です」と表示する
この条件を満たすプログラムを作成してみましょう。

Private Sub btnIf_Click()

    '初期化
    Cells(1, 2).Value = ""

    '複数条件分岐 ElseIf
    If Cells(1, 1).Value = 1 Then
        Cells(1, 2).Value = "値は1です"
    ElseIf Cells(1, 1).Value < 10 Then
        Cells(1, 2).Value = "10未満の値です"
    End If

End Sub

結果

「1」は10より小さい条件も満たしますが、先に1の時の条件に引っかかるので、「値は1です」が表示されています。
このようにElseIfがあればいくつでも条件分岐をすることが可能です。

Else文

Else文とは、If文やElse文の条件に当てはまらかったもの全てに対して処理を行います。

例として
①値が「1」のとき、「値は1です」と表示する。
②値が「10未満」のとき、「10未満の値です」と表示する
③上記以外の場合、「10以上の値です」と表示する
このような条件を満たすプログラムを記載してみましょう。

Private Sub btnIf_Click()

    '初期化
    Cells(1, 2).Value = ""

    '複数条件分岐 ElseIf
    If Cells(1, 1).Value = 1 Then
        Cells(1, 2).Value = "値は1です"
    ElseIf Cells(1, 1).Value < 10 Then
        Cells(1, 2).Value = "10未満の値です"
    Else
        Cells(1, 2).Value = "10以上の値です"
    End If

End Sub

結果

サンプルソース

①値が「1」のとき、「値は1です」と表示する。
②値が「10未満」のとき、「10未満の値です」と表示する
③値が「10」もしくは「100」のとき、「10もしくは100の値です」と表示する
④値が「10以上」かつ「100以下」のとき、「10以上かつ100未満の値です」と表示する
⑤上記以外の場合、「100以上の値です」と表示する

Private Sub btnIf_Click()

    '初期化
    Cells(1, 2).Value = ""

    '複数条件分岐 ElseIf
    If Cells(1, 1).Value = 1 Then
        Cells(1, 2).Value = "値は1です"
    ElseIf Cells(1, 1).Value < 10 Then
        Cells(1, 2).Value = "10未満の値です"
    ElseIf Cells(1, 1) = 10 Or Cells(1, 1) = 100 Then
        Cells(1, 2).Value = "10もしくは100の値です"
    ElseIf Cells(1, 1).Value >= 10 And Cells(1, 1).Value < 100 Then
        Cells(1, 2).Value = "10以上かつ100未満の値です"
    Else
        Cells(1, 2).Value = "100以上の値です"
    End If

End Sub

 

まとめ

If文を利用することで、プログラムの条件分岐をすることができます。

「If文」「ElseIf文」「Else文」「And条件」「Or条件」

この5つの使い方を抑えておくことで条件分岐を自在に行うことができますので、必ず押さえておきましょう。
プログラミングをする上でIf文は最も重要な文法の1つです。

 

EXCEL VBAの記事一覧

おすすめの記事