VBAにおける条件分岐の使い方

Excel VBA

今回は条件分岐とループ処理についてのご説明をしたいと思います。

条件分岐

条件分岐とは、指定された条件によって処理の行き先が変わる仕組みのことです。 条件分岐のためのステートメントは大きく分けて2種類です。 分岐先が何通りあるかで、使うステートメントを変えていくことになります。

If  Thenステートメント

条件分岐のステートメントとしては最も一般的に使われるものです。 基本的には、条件に一致した場合のみ実行したい、といった処理がある場合に使います。

まずは基本的な構文から見ていきましょう。

If 条件 Then
    処理
End If

条件と一致した場合のみ、「Then」以降の処理が行われます。 一致しなかった場合は、そのまま次の処理へと移っていくことになります。

それでは具体的なコードの例を書いてみます。

Sub jokenMessage()
    Dim i As Integer
    i = 5
    If i = 5 Then
        MsgBox ("If条件一致")
    End If
End Sub

このコードでは「If」の条件と一致することになるため、「Then」以降の処理が実行されることになります。 逆に「i」の値を別の数字に置き換えた場合、「Then」以降の処理は実行されないことになります。

If Then Elseステートメント

ほぼIf Thenと同じですが、「Else」を付けることで、条件と一致しなかった場合の処理も記述できます。

まずは構文から見ていきましょう。

If 条件 Then
  処理1
Else
  処理2
End If

条件と一致した場合はIf Thenと同じですが、一致しなかった場合は処理2が実行されることになります。

では例としてコードを記述してみましょう。

Sub jokenMessage()
    Dim i As Integer
    i = 4
    If i = 5 Then
        MsgBox ("If条件一致")
    Else
        MsgBox ("その他")
    End If
End Sub

このコードをそのまま実行すると、「その他」の文字がメッセージとして表示されます。 Ifの条件と一致しなかったため、「Else」側のコードが実行された形となります。

ElseIfステートメント

基本的にはIf Then Elseと同じです。 If条件と一致しなかった場合に、さらに他の条件で分岐させることができます。

ではまず構文から見てみましょう。

If 条件1 Then
  処理1
ElseIf 条件2 Then
  処理2
Else
  処理3
End If

条件1で拾いきれないケースを、条件2で拾うことができますね。

それでは例としてコードを記述してみます。

Sub jokenMessage()
    Dim i As Integer
    i = 4
    If i = 5 Then
        MsgBox ("If条件一致")
    ElseIf i = 4 Then
        MsgBox ("ElseIf条件一致")
    Else
        MsgBox ("その他")
    End If
End Sub

今回の例ではElseIfが1つだけですが、複数のElseIfを使い、さらに拾えるケースを増やすこともできます。

Select Caseステートメント

Ifステートメントとは構文が少し異なります。 分岐先が多い場合は、ElseIfよりもこちらの「Select Case」を使った方がスマートにまとまります。

ではまず構文から見てみましょう。

Select Case 変数
  Case 条件1
    処理1
  Case 条件2
    処理2
  Case 条件3
    処理3
End Select

ここでは条件を3つとしていますが、さらに多くの条件と、それに伴う処理を記述できるのがポイントです。 また、If ThenステートメントのようにElseを使うこともでき、全ての条件に当てはまらなかった場合の処理も記述できます。 この場合は「Case Else」と記述することになります。

それでは、Elseを使ったコード例を記述してみます。

Sub SelectMessage()
    Dim i As Integer
    i = 2
    Select Case i
    Case 1
        MsgBox ("1の場合")
    Case 2, 3       '注1
        MsgBox ("2と3の場合")
    Case Else
        MsgBox ("その他")
    End Select
End Sub

注1の文では、複数の条件が指定されています。 複数の条件を指定する場合は、カンマで区切ることで、同等の条件とすることができます。

条件の正と負

ここまで、条件が正しいか正しくないかという表現を使ってきましたが、プログラムの世界では別の言い方で表現します。

  • 条件と一致する場合 正(せい)
  • 条件と一致しない場合 負(ふ)

という表現を用います。 多少専門的で、日常生活には馴染みのない言葉ですね。 プログラムの中でよく用いられる表現になります。 今後は当ブログでも正と負での表現をしたいと思います。 例えばIf Thenステートメントなら、「If条件が正ならThen以降の処理を実行する。」という言い方になります。

今回のまとめ

  • 条件の分岐先が少ない場合はIfステートメントを使う
  • 分岐先が多い場合はSelectステートメントを使う

次回は変数と条件分岐を使って、ループ処理のご説明をしたいと思います。

コメント

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