Share via


方法 : 式を複数の値と比較する

更新 : 2007 年 11 月

同じ式を複数の値と比較する場合は、If...Then...Else ステートメント (Visual Basic) 構造の代わりに Select...Case ステートメント (Visual Basic) 構造を使用できます。If ステートメントと ElseIf (Visual Basic) ステートメントは、各ステートメントで異なる式を評価できるのに対し、Select ステートメントは、1 つの式を 1 回だけ評価し、その式をすべての比較に使用します。

1 つの式を 1 回だけ評価し、複数の値と比較するには

  • Select...Case 構造を使用して、式および複数の値を指定します。各 Case ステートメントには、1 つまたは複数の値、値の範囲、または値と比較演算子の組み合わせを指定できます。Case Else ステートメントを使用すると、それ以前の Case ステートメントで検証されなかったすべての値を処理できます。このプロセスを説明する例を次に示します。

    Function bonus(ByVal performance As Integer, ByVal salary As Decimal) _
        As Decimal
        Select performance
            Case 1
                Return salary * 0.1
            Case 2, 3
                Return salary * 0.09
            Case 5 To 7
                Return salary * 0.07
            Case 4, 8 To 10
                Return salary * 0.05
            Case Is < 15
                Return 100
            Case Else
                Return 0
       End Select
    End Function
    

    Visual Basic は、式の値と、Case ステートメントの値とを、Select...Case で指定されている順序で比較します。値が一致するか、Case Else ステートメントが実行されると、対応するステートメント ブロックが実行されます。いずれの場合も、その後、End Select ステートメントに続くステートメントに分岐します。

    Case ステートメントは、任意の数指定できます。また、Case ステートメントがあるかどうかにかかわらず、Case Else ステートメントを 1 つ指定でき、省くこともできます。

Select...Case 構造のコード例は、IntelliSense コード スニペットにもあります。コード スニペット ピッカーでは、これは [Visual Basic Language] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。

参照

処理手順

方法 : 制御構造から制御を移す

方法 : 1 つ以上の条件に基づいて、ステートメントを実行する

方法 : エラー発生時に制御を継続する

概念

条件判断構造

ループ構造

その他の制御構造

入れ子になった制御構造

その他の技術情報

Visual Basic における制御フロー