Excel VBA 条件分岐

スポンサーリンク
スポンサーリンク

条件分岐

条件分岐は、設定した条件を満たす(True)満たさない(False)によって異なる処理を実行します。

条件分岐の処理は大きく分けて2つの種類があります。

  • If【イフ】ステートメント
    ある条件によって処理を分岐します。
  • Select Case【セレクトケース】ステートメント
    1つの対象を複数の条件によって処理を分岐します。

条件分岐で使用する演算子

条件を満たしている場合は「True」条件を満たさない場合は 「False」を返します。

比較演算子
比較演算子内容使用例結果
等しい5=2False
<>等しくない5<>2True
より小さい5<2False
より大きい5>2True
<=以下5<=2False
>=以上5>=2True

論理演算子
論理演算子書式内容
And条件1 Ahd 条件2条件1を満たし
条件2を満たす(論理積)
Or条件1 Or 条件2条件1を満たすか
条件2を満たす(論理和)
NotNot 条件条件ではない(論理否定)

1つの条件を満たしたときだけ処理を実行する

1つの条件を満たしたときだけ処理を実行するには、以下の書式を使用します。条件式がTrue(条件を満たした)の場合だけ処理が実行されます。


1つの条件を満たしたときと満たさなかったときで処理を振り分ける

1つの条件を満たしたときと満たさなかったときで処理を振り分けるには、以下の書式のようにElse【エルズ】を組み合わせて記述します。条件式がTrueの場合は処理1を実行し、条件式がFalseの場合は処理2を実行します。


複数の条件で処理を振り分ける

ElseIf【エルズイフ】キーワードを使用すると複数の条件分岐ができるようになります。最初の条件を満たさなかった場合にElseIf【エルズイフ】で指定した別の条件分岐を行い、それも満たさなかったら次のElseIf【エルズイフ】で指定した別の条件分岐を行う、というように必要なだけ条件分岐を使用することができます。最後に、Else【エルズ】キーワードを使用して、すべての条件を満たさなかった場合の処理を記述することもできます。


Ifステートメントで、定形郵便の料金を重さによって分岐するコード

Sub 条件分岐()
Dim g As Integer
 g = Application.InputBox("定形郵便の重さをグラムで入力してください。", Type:=1)
If g <= 25 Then
 MsgBox ("82円です。")
ElseIf g <= 50 Then
 MsgBox ("92円です。")
Else
 MsgBox ("定形外です。")
End If
End Sub

コードの解説

定形郵便料金は25グラム以下が82円、50グラム以下が92円それ以上は定形外料金になります。
Application【アプリケーション】オブジェクトの InputBox【インプットボックス】メソッドを利用してユーザーに郵便物の重量を入力してもらい、その重さの値を元に条件分岐をして料金をメッセージボックスで表示します。


2行目【 Dim g As Integer 】
インプットボックスで受け取ったユーザーが入力した郵便物の重量を格納する変数「g」を整数型(Integer)で宣言します。


3行目【 g = Application.InputBox(“定形郵便の重さをグラムで入力してください。”, Type:=1) 】
ApplicationオブジェクトのInputBoxメソッドを使用してユーザーに郵便物の重量を入力してもらい、変数「g」に代入します。


4行目【 If g <= 25 Then 】
Ifステートメントで変数g(郵便物の重量)の値が25以下だったときを定義します。


5行目【 MsgBox (“82円です。”) 】
4行目の条件が成立した時にMsgBox関数を使用して料金を表示します。


6行目【 ElseIf g <= 50 Then 】
ElseIf【エルズイフ】キーワードを使用して、4行目の条件が成立しなかった場合つまり郵便物の重さが25以上だった場合に2つ目の条件として変数g(郵便物の重量)の値が50以下だったときを定義します。


7行目【MsgBox (“92円です。”)】
6行目の条件が成立したとき、つまり、郵便物の重量が25以上50以内の場合にMsgBox関数を使用して料金を表示します。


8行目~9行目【 Else
MsgBox (“定形外です。”) 】

Else【エルズ】キーワードを使用して、すべての条件が成立しなかったとき、つまり郵便物の重量が50以上の場合MsgBox関数を利用して定形外であることを伝えます。


1つの対象に対して複数の条件で処理を振り分ける

Select Case【セレクトケース】ステートメントは、1つの条件判断の対象に対して複数の条件を設定して条件判断処理を行います。処理の流れはElseIf【エルズイフ】キーワードのあるIfステートメントと同じですが、条件判断の対象が同じである必要がないElseIfに対してSelect Case【セレクトケース】ステートメントは条件判断の対象が常に1つという点が異なります。


Select Case【セレクトケース】ステートメントでの条件設定方法

比較演算子を使用する場合はIs演算子を記述してから比較演算子を記述しますが、入力時にIs演算子を省略しても条件式を確定して改行すると、自動で入力されます。

条件書式
5のときCase 5
5以上のときCase Is >=5
5より大きいときCase Is >5
10以下のときCase Is <=10
10より小さいときCase Is < 10
5以上10以下のときCase 5 To 10
5または10のときCase 5 ,10

SelectCaseステートメントで、定形郵便の料金を重さによって分岐するコード

Sub 条件分岐2()
Dim g As Integer
 g = Application.InputBox("定形郵便の重さをグラムで入力してください。", Type:=1)
Select Case g
Case 1 To 25
 MsgBox ("82円です。")
Case 26 To 50
 MsgBox ("92円です。")
Case Else
  MsgBox ("定形外です。")
End Select
End Sub

コードの解説

結果はIfステートメントと同じになります。


4行目【 Select Case g 】
Select Caseに条件の比較対象となる変数g(ユーザーが入力した郵便物の重量)をあてます。


5行目~6行目【 Case 1 To 25
MsgBox (“82円です。”) 】

Caseに 1 To 25 で比較対象のg変数が1~25に当てはまるか確認します。当てはまっていたら6行目の処理をします。


7行目~8行目【 Case 26 To 50
MsgBox (“92円です。”) 】

Caseに 26 To 50 で比較対象のg変数が26~50にあてはまるか確認します。あてはまっていたら8行目の処理をします。


9行目~10行目【 Case Else
MsgBox (“定形外です。”) 】

すべての条件が成立しなかった時に10行目の処理をします。


以上で条件分岐についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク