今回は分岐処理第2回目 Select Caseステートメントについてです!
条件分岐が複数存在する場合、If…Then…Elseを駆使すれば条件分岐できますが、こちらを利用すると簡単に解消される場合が多いので、しっかり覚えましょう(^^)
楽しみに待っていました。しっかり勉強しま~す(^^)
よろしくお願いしますm(_ _)m
前回のおさらいはこちらの記事です(^^)/ 下のカードをクリックすれば開きます
前回記事でわかったことは
・If…Then…Else ステートメントの使い方がわかりました
・ElseIf を使った複数条件の分岐がわかりました
・論理演算子を使って複数の条件を判定して評価できることがわかりました
【この記事でわかることは】
・Select…Case ステートメントの使い方がわかります
Select Case ステートメント
式の値に応じて、複数のステートメントのグループのいずれかを実行します
Select Case ステートメントの構文
Select Case testexpression
[ Case expressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select
Select Case ステートメント構文の指定項目の詳細はつぎのとおり
パーツ | 説明 |
---|---|
testexpression | 必須。 任意の数値式または文字列式です。 |
expressionlist-n | Case がある場合は必須です。 expression、 expression To expression、 Is comparisonoperator expression の形式の 1 つまたは複数を含む区切りリストです。 To キーワードは値の範囲を指定します。 To キーワードを使用する場合は、 小さい方の値を To の前に置く必要があります。 Is キーワードは比較演算子(Is と Like を除く)と併用して値の範囲を指定 します。 指定していない場合は、Is キーワードが自動的に挿入されます。 |
statements-n | 省略可能。 testexpression が expressionlist-n のいずれかの部分と一致 したときに実行される 1 つ以上のステートメントです。 |
elsestatements | 省略可能です。 testexpression が Case 句のいずれとも一致しない場合に 実行される、1 つ以上のステートメントです。 |
構文の解説
・testexpressionには、評価する数式または文字列式を指定します
・expressionlistには、Case 句を実行するための条件を指定します
・statementsには、実行する1つ以上のステートメントを指定します(省略可能です)
testexpression が Case expressionlist 式のいずれかと一致する場合は、その Case 句の後から次の Case 句まで、最後の句については End Select までのステートメントが実行されます
testexpression が複数の Case 句の expressionlist 式に一致する場合は、最初に一致した句に続くステートメントのみが実行されます
Case Else 句は、その他のどの Case の選択肢にも testexpression と expressionlist との間に一致するものが見つからない場合に実行する elsestatements を示すために使用されます
Case Else は必須ではありませんが、予測できない testexpression の値を処理するために、Select Case ブロック内で使用したほうがよいでしょう
Select Caseサンプルコード(基本)
'Select Caseステートメントの使用例サンプル1
Sub Select_Case_Sample1()
Dim Number As Long
Dim CaseString As String
On Error Resume Next '数字以外が入力された場合0にするため
Number = InputBox("1~5の整数を入力してください", "Select_Case_TEST") 'NO入力要求
Select Case Number
Case 0
CaseString = " は 0 です"
Case 1
CaseString = " は 1 です"
Case 2
CaseString = " は 2 です"
Case Else
CaseString = " は 3 以上です"
End Select
MsgBox "入力値 " & Number & CaseString
End Sub
・7行目で、インプットボックスを表示して1~5の整数入力を要求し入力値をNumberに代入
・9行目で、Select Case に変数 Number を充てています
・10行目、最初の Case 0 を評価して一致していれば変数 CaseString に ” は 0 です”を代入
・一致していない場合、次の Case を評価して行き、一致していれば当該Case句を実行します
・End Select 後、結果をメッセージボックスで評価値を表示します
To キーワードを使ったSelect Caseサンプルコード
To キーワードで範囲指定したサンプルコードです
'Select Case の To キーワード使用例サンプル
Sub Select_Case_Sample2()
Dim Number As Long
Dim CaseString As String
On Error Resume Next '数字以外が入力された場合0にするため
Number = InputBox("整数を入力してください", "Select_Case_TEST") 'NO入力要求
Select Case Number
Case 1 To 10
CaseString = " は1~10の範囲内です"
Case 11 To 20
CaseString = " は11~20の範囲内です"
Case 21 To 50
CaseString = " は21~50の範囲内です"
Case 51 To 100
CaseString = " は51~100の範囲内です"
Case Else
CaseString = " は101以上です"
End Select
MsgBox "入力値 " & Number & CaseString
End Sub
・10行目、1 To 10(1~10) を評価して一致していれば変数 CaseString に指定文字列を代入
・一致していない場合、次の Case を評価して行き、一致していれば当該Case句を実行します
・End Select 後、結果をメッセージボックスで評価値を表示します
Is キーワードを使ったSelect Caseサンプルコード
'Select Case の Isキーワード使用例サンプル
Sub Select_Case_Sample3()
Dim Number As Long
Dim CaseString As String
On Error Resume Next '数字以外が入力された場合0にするため
Number = InputBox("整数を入力してください", "Select_Case_TEST") 'NO入力要求
Select Case Number
Case Is < 10
CaseString = " は10未満です"
Case Is < 100
CaseString = " は100未満です"
Case Else
CaseString = " は100以上です"
End Select
MsgBox "入力値 " & Number & CaseString
End Sub
・7行目で、インプットボックスを表示して整数の入力を要求し入力値をNumberに代入
・10行目、Case Is < 10(10未満)を評価し、一致していれば変数 CaseString に文字列を代入
・一致していない場合、次の Case を評価して行き、一致していれば当該Case句を実行します
・End Select 後、結果をメッセージボックスで評価値を表示します
その他の例
・「文字列の範囲」や「複数の文字列式」を指定することもできます
・次の例の Case は “everything” と完全に等しい文字列、アルファベット順で “nuts” と “soup” の間にある文字列、および変数 TestItem の現在の値と一致します
Case “everything”, “nuts” To “soup”, TestItem
elect Case ステートメントを入れ子に(ネスト)する場合
・Select Case ステートメントは入れ子にできます
・入れ子にした場合、各 Select Case ステートメントごとに、対応する End Select ステートメントが必要になります
Select Case A Case 1 Select Case B Case 4 処理1 Case 5 処理 5 End Select Case 2 処理2 Case 3 処理3 End Select
まとめ(おわりに)
は~い! Select Caseステートメントの説明はここで終了です!
使い方は理解できましたか? しっかり覚えてくださいね(^^)
はい! よくわかりました(^^)
いろいろ試してみて、しっかり使い方を覚えるようにします(^^ゞ
はい! 条件分岐の方法の幅が広がりましたね。
次回は、GoTo ステートメントの使い方を解説します。楽しみに待っていてね(^^)/
まとめと感想など
・マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください!
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!
★★★ ランキング参加中! クリックしてね(^^)/ ★★★
今後の記事について
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます
【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/
記事のサンプルファイルをダウンロードできます
この記事のサンプルはこのリンク先からダウンロードでます!
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください
・Select Case ステートメントの使い方がわかりました
・To キーワード と ls キーワードの使用例がわかりました
・入れ子に(ネスト)する場合の注意点がわかりました