VBA|複数の条件分岐で処理を実行させる(ElseIf)

エクセルVBA VBAの基礎・入門



得点が50点以上の場合、70点以上の場合、100点以上の場合・・・という、複数の条件式を準備し、それぞれの条件式に該当した処理を実行させたい場合には、ElseIfステートメントを使用します。

今回は、ElseIfの記述方法について解説していきます。

※もし、条件式を満たす場合・満たさない場合の処理があやふやでしたら、まず「If~Then」ステートメントを使った、条件式を満たす場合(真)・満たさない場合(偽)の処理の記述方法についての学習をおススメします。

参考:Excel VBA入門 その20:条件によって処理を分岐する(If~Then 命令)

参考: Excel VBA入門 その21:条件を満たした場合と複数の条件によって処理を分岐させる(If~Then~Else)



IF 条件式1 Then 処理1 ElseIf 条件式2 Then 処理2 ・・・

ElseIfステートメントを使った記述方法は次のようになります。

IF 条件式1 Then

処理1

ElseIf 条件式2 Then

処理2

ElseIf 条件式3 Then

処理3 (・・・以降、処理nまで続く)

EndIf

ElseIfの処理の流れとしては、コードを上から順に条件式を比較していき、満たされた条件式に記述されている処理を実行し、If文を終了します。

処理の流れをフローチャートで示す前に、ElseIfを使用したVBAコードの実例を紹介します。

ElseIfを使用したVBAコードの例

下の表のように、佐藤太郎君の得点は80点ですが、これを以下のような条件分岐で処理を実行させてみましょう。

  • 100点より大きければ、得点の文字色を赤色
  • 85点より大きければ、得点の文字色を緑色
  • 70点より大きければ、得点の文字色を青色

ElseIfを使ったVBAコードは以下のとおりになります。

Sub 例()
    
    Dim Tokuten As Long
          
    Tokuten = Cells(3, 3).Value   '変数 Tokuten にセルC3の値を格納
    
    If Tokuten > 100 Then                'もし、Tokutenが100より大きければ、、、
        Cells(3, 3).Font.ColorIndex = 3  'セルC3の文字色を赤色に設定する
    
    ElseIf Tokuten > 85 Then             'Toketenが「85より大きい」を満たせば、、、
        Cells(3, 3).Font.ColorIndex = 4  'セルC3の文字色を緑色に設定する
    
    ElseIf Tokuten > 70 Then             'Toketenが「70より大きい」を満たせば、、、
        Cells(3, 3).Font.ColorIndex = 5  'セルC3の文字色を青色に設定する
    
    End If                               'If~Then文の終わり
    
End Sub

実行すると、C3セルの文字色が青色になります。

ElseIfステートメントの動作フローチャート

条件を満たしたところで、その条件式に該当する処理を実行し、EndIf(処理終了)になります。

ここで注意してほしい点は、複数の条件式を満たす場合でも、実行される処理は最初に条件式を満たした部分に記述されている処理を実行し終了する(EndIf)ので、以降に記述されている条件式を満たしていたとしても、その処理は実行されないということです。

先ほどの佐藤太郎君の例でいうと、、、

得点が120点とします。先ほどの例と同じ複数条件をもう一度示します。

  • 100点より大きければ、得点の文字色を赤色
  • 85点より大きければ、得点の文字色を緑色
  • 70点より大きければ、得点の文字色を青色

佐藤君の得点は120点ですので、すべての条件を満たしています。

ですが、実行される処理は、一番最初に条件を満たした「100点より大きければ、得点の文字色を赤色」の処理だけです。

処理の流れが理解できていないと引っかかってしまうトラップなので、注意してくださいね。




VBAの基礎・入門
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

タイトルとURLをコピーしました