関数・メソッド

複数の条件をわかりやすく記述する【Select Caseステートメント】【ExcelVBA】

Select Caseステートメント

Ifステートメントで多くの条件式を使用しているとコードが長くなり視認性を損ないます。
Select Caseステートメントを使用し、コードを見やすくしましょう。

構文

Select Case testexpression
    [Case expressionlist-n
        [statements-n]]
    ・・・
    [Case Else
        [elsestatements]]
End Select

testexpression任意の数値式または文字列式。必須です。
expressionlist-nCase 節がある場合は、必須です。
Toキーワード は、値の範囲を指定します。小さい方の値を To の前に置いてください。
Isキーワードは、 Is と Like を除いた比較演算子と併用して値の範囲を指定します。
指定していない場合は、Isキーワードが自動挿入されます。
statements-n省略可。 testexpression が expressionlist-n のいずれかと一致したときに実行されます。
elsestatements省略可。 testexpression が Case 句のいずれとも一致しない場合に実行されます。

Select Caseを使ったサンプルコード

Public Sub Sample()
    Dim num As Long
    num = InputBox("数値を入力してください")
'■Ture、Falseの判定
    Select Case num 
     Case 5 '■Tureの条件
        MsgBox "5"
     Case Else '■Falseの条件
        MsgBox "5ではない"
   End Select
'■Or(,)を使用する場合
   Select Case num 
     Case 1,2
        MsgBox "1or2"
     Case 3,4
        MsgBox "3or4"
     Case Else
        MsgBox "1,2,3,4ではない"
   End Select 
'■Andを使用する場合
   Select Case True 
     Case num >= 1 And num <= 100
        MsgBox "1~100の範囲内"
     Case Else
        MsgBox "1~100の範囲外"
   End Select
'■Toを使用する場合
   Select Case num 
     Case 1 To 100
        MsgBox "1~100の範囲内"
     Case Else
        MsgBox "1~100の範囲外"
    End Select
'■Isを使用する場合
    Select Case num
     Case Is <= 50
        MsgBox "数は1から50の範囲内です。"
     Case Else
        MsgBox "数は1から50の範囲外です。"
End Sub


注意点

  • Select Caseステートメントは上から順に判定を行い、最初に合致した条件だけを実行します。
  • より複雑な条件式で分岐処理を行いたい場合はIfステートメントを使用してください。

関連記事

コメント

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