条件分岐
条件分岐は、設定した条件を満たす(True)満たさない(False)によって異なる処理を実行します。
条件分岐の処理は大きく分けて2つの種類があります。
- If【イフ】ステートメント
ある条件によって処理を分岐します。 - Select Case【セレクトケース】ステートメント
1つの対象を複数の条件によって処理を分岐します。
条件分岐で使用する演算子
条件を満たしている場合は「True」条件を満たさない場合は 「False」を返します。
比較演算子 | 内容 | 使用例 | 結果 |
---|---|---|---|
= | 等しい | 5=2 | False |
<> | 等しくない | 5<>2 | True |
< | より小さい | 5<2 | False |
> | より大きい | 5>2 | True |
<= | 以下 | 5<=2 | False |
>= | 以上 | 5>=2 | True |
論理演算子 | 書式 | 内容 |
---|---|---|
And | 条件1 Ahd 条件2 | 条件1を満たし 条件2を満たす(論理積) |
Or | 条件1 Or 条件2 | 条件1を満たすか 条件2を満たす(論理和) |
Not | Not 条件 | 条件ではない(論理否定) |
1つの条件を満たしたときだけ処理を実行する
1つの条件を満たしたときだけ処理を実行するには、以下の書式を使用します。条件式がTrue(条件を満たした)の場合だけ処理が実行されます。
1つの条件を満たしたときと満たさなかったときで処理を振り分ける
1つの条件を満たしたときと満たさなかったときで処理を振り分けるには、以下の書式のようにElse【エルズ】を組み合わせて記述します。条件式がTrueの場合は処理1を実行し、条件式がFalseの場合は処理2を実行します。
複数の条件で処理を振り分ける
ElseIf【エルズイフ】キーワードを使用すると複数の条件分岐ができるようになります。最初の条件を満たさなかった場合にElseIf【エルズイフ】で指定した別の条件分岐を行い、それも満たさなかったら次のElseIf【エルズイフ】で指定した別の条件分岐を行う、というように必要なだけ条件分岐を使用することができます。最後に、Else【エルズ】キーワードを使用して、すべての条件を満たさなかった場合の処理を記述することもできます。
Ifステートメントで、定形郵便の料金を重さによって分岐するコードと解説
定形郵便料金は25グラム以下が82円、50グラム以下が92円それ以上は定形外料金になります。Application【アプリケーション】オブジェクトの InputBox【インプットボックス】メソッドを利用してユーザーに郵便物の重量を入力してもらい、その重さの値を元に条件分岐をして料金をメッセージボックスで表示します。
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
インプットボックスで受け取ったユーザーが入力した郵便物の重量を格納する変数「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ステートメントで、定形郵便の料金を重さによって分岐するコードと解説
結果はIfステートメントと同じになります。
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
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行目の処理をします。
以上で条件分岐についての解説を終了します。
ありがとうございました。