【Excel VBA入門】条件分岐処理|If ~ Then

記述編

If … もしも~ならば

これ英語の授業ででてきましたよね。じつはこれプログラミングでも同じ意味「もしも~ならば」でつかわれています。

今回はVBAでの具体的な「If」の使い方をご紹介いたします。

スポンサーリンク

条件分岐処理とは

まずは前提となる「条件分岐処理」の考え方をおさえておきましょう。

こちらは条件によって次の処理を分けたいときに使います。
「条件を満たせばコレ、満たさなければアレ」のような考え方です。

以下は「セルA1が空白なら」値を入力し、「セルA1が空白でなければ」値を削除するといったときの流れです。

「セルA1の値」によって処理を分岐させたいときに使います。

共通の考え方

それではコードをつかってご説明をします。

これから記述したい内容はこちらです。

【スタート】マクロの名前:jouken_kyotsu
    (条件分岐の開始)もしセルA1が空白ならば
        セルA1に1を代入する
    (条件分岐の終了)
【ゴール】

コードでの記述はこちら。

Sub jouken_kyotsu()
    If Range("A1").Value = "" Then
        Range("A1") = 1
    End If
End Sub

条件分岐処理のポイントについて解説をします。

If (ここに分岐させたい条件を記述) Then
    (ここに設定条件が正しかったときに動作させたい内容を記述)
End If

このような構成になっています。

赤色の部分は「記述必須」です。これを書いていないとエラーになります。

具体例な使い方

「If」にはさまざまな使い方があります。

基本となる考え方は共通しますが、「より複雑な動作」を記述したいときに「使いわけ」をします。

以下、具体的なコードをつかってご紹介します。

If ~ Then

こちらはさきほどご説明したとおりですが、もっとも基本的な考え方になります。

あらためて具体的なコードを使ってご説明します。

こちらが記述したい内容です。

【スタート】マクロの名前:if_then
    (条件分岐の開始)もしセルA1が5より大きいならば
        メッセージを表示「セルA1は、5より大きいです。」
    (条件分岐の終了)
【ゴール】

こちらがコードの内容です。

Sub if_then()
    If Range("A1").Value > 5 Then
        MsgBox ("セルA1は、5より大きいです。")
    End If
End Sub

マクロ実行の結果がこちらです。

セルA1が5よりも大きい場合「のみメッセージが表示されます。

セルA1が5以下の場合は、メッセージは表示されません。

「5より大きい」は「5」をふくみません。6,7,8,9…が該当します。

「5以上」は「5」をふくみます。5,6,7,8…が該当します。

If ~ Then ~ Else

こちらは「Else」が追加されていますね。

さっそく具体的なコードをつかってご説明します。

こちらが記述したい内容です。

【スタート】マクロの名前:if_then_else
    (条件分岐の開始)もしセルA1が5より大きいならば
        メッセージを表示「セルA1は、5より大きいです。」
    そうでなければ
        メッセージを表示「セルA1は、5以下です。」
    (条件分岐の終了)
【ゴール】

こちらがコードの内容です。

Sub if_then_else()
    If Range("A1").Value > 5 Then
        MsgBox ("セルA1は、5より大きいです。")
    Else
        MsgBox ("セルA1は、5以下です。")
    End If
End Sub

Else」のポイントはこちらです。

If (ここに分岐させたい条件を記述) Then
    (ここに設定条件が正しかったときに動作させたい内容を記述)
Else
    (設定条件が正しくなかったときに動作させたい内容を記述)
End If

マクロ実行の結果がこちらです。

セルA1が5より大きくない場合もメッセージが表示されます。

If ~ Then ~ ElseIf

こんどは「ElseIf」が追加されていますね。

さっそく具体的なコードをつかってご説明します。

こちらが記述したい内容です。

【スタート】マクロの名前:if_then_elseif
    (条件分岐の開始)もしセルA1が10以上ならば
        メッセージを表示「セルA1は、10以上です。」
    (つぎの条件分岐)もしセルA1が5以上ならば
        メッセージを表示「セルA1は、5以上です。」
    (さいごの条件分岐)どれにも該当しないならば
        メッセージを表示「セルA1は、5より小さいです。」
    (条件分岐の終了)
【ゴール】

こちらがコードの内容です。

Sub if_then_elseif()
    If Range("A1").Value >= 10 Then
        MsgBox ("セルA1は、10以上です。")
    ElseIf Range("A1").Value >= 5 Then
        MsgBox ("セルA1は、5以上です。")
    End If
End Sub

ElseIf」のポイントはこちらです。

If (分岐させたい「条件1」を記述) Then
    (「条件1」が正しかったときに動作させたい内容を記述)
ElseIf (さらに分岐させたい「条件2」を記述) Then 
    (「条件1」ではなく「条件2」が正しかったときに動作させたい内容を記述)
Else
    (設定条件が正しくなかったときに動作させたい内容を記述)
End If

プログラムは上から順に実行されます。

例のように複数条件を設定するときは、「大きい順」もしくは「小さい順」で順番に記述をしましょう。

If」と「ElseIf」の設定条件にどれも該当しなかった場合、「Else」で記述された処理を実行します。

マクロ実行の結果がこちらです。

まとめ

If」の使い方についてのご説明をいたしました。

マクロ作成では、かなりよく使われている印象をうけます。この条件分岐処理は複雑なマクロを作るうえでは必須の方法ですので、しっかりと理解を深めておきましょう。