Select Case 制御文 [VB]

VB2012-2019

条件多分岐処理

SelectCase分岐

Select Caseステートメントを使うと、複数の条件判定を、スマートにプログラミングできます。

Case句の条件式を満たす時は、最初に条件式を満たしたCase句だけが実行されます。

最後のCase Else句を省略すると、すべてのCase句の条件式を満たさなかった場合には、何も実行されません。

Case 条件判定式は、いくつでも指定することができますが、数が多かったり、条件判定式が複雑だと、エラー(バグ)の原因になります。そのあたりを注意してプログラミングしてください。

Select Caseと同様な制御文に、If 条件式 ThenElseIfEnd If があります。

Case句の便利な点は、If 条件式 ThenElseIfEnd If より幅広い条件判定式が書けることです。

いろいろな条件判定式が書ける

Case句では、いろいろな条件判定式が書けます。たとえば、範囲指定や、複数の条件を設定できます。

  ' 値の範囲指定ができる
  Case 120 To 200
  ' 複数の条件が指定できる
  Case 1 To 10, 20, 30, 40, Is >= 100

Is キーワード

Select Case 句で指定した式(通常は変数、次のサンプルプログラムではinNum)が、Case句のIs条件式を満たしていれば、この Case句の処理が実行されます。

サンプルプログラムでは、Case Is < 0, Is >= 150 と、 Is キーワードを使っていますが、これは、inNum の値が 0 より小さいか、150以上の時に、この Case句が実行されます。

  Case Is < 0, Is >= 150

しかし、条件式が多かったり、複雑だとエラー(バグ)の原因になります。事前によく整理して、すっきりした条件式を書くようにしましょう。

Select Case サンプルプログラム

キーボードから年齢を入力すると、Select Case句を使って、年齢に応じたメーッセージを表示するプログラムを作成します。

年齢は整数で入力します。キーボードから整数を入力する方法を参考にしてください。

ソースリストの枠内をクリックすると全選択できます。

Module Module1

  Sub Main()
      ' 変数の宣言
      Dim inStr As String = ""
      Dim inNum As Integer = 0
      Dim msg As String = ""

      ' キーボードから年齢入力
      Console.WriteLine("年齢を入力してください")
      inStr = Console.ReadLine()
      ' 文字列を整数に変換
      inNum = Integer.Parse(inStr)

      ' 年齢を判定して処理を振分
      Select Case inNum
          Case Is < 0, Is >= 150
             ' 表示メッセージ
             msg = "年齢に誤りがあります"
          Case 0 To 17
             msg = "まだ選挙権はありません"
          Case 18
             msg = "選挙に行けます"
          Case 30, 40, 50
             msg = inStr & "歳です。飲みすぎ注意"
          Case 19 To 59
             msg = "散歩していますか"
          Case Else
             msg = "健康に気をつけましょう"
      End Select

      ' 結果を表示
      Console.WriteLine(msg)
  End Sub

End Module