A子さん「Ifで条件分岐してたら、気づけばネスト地獄……
もうどれがどの条件かわからない……」



そんなときに便利なのが、**Select Case**構文です!
結論:分岐が多い処理はSelect Caseを使うとスッキリ!
Select Caseは、複数の条件に応じた処理をシンプルに整理できる構文です。
特にIf~ElseIf~Elseが多くなって読みづらくなってきたら、Select Caseに置き換えるのがベストです!
目次
Select Caseの基本構文
Select Case 変数
Case 条件1
' 条件1に合致したときの処理
Case 条件2
' 条件2に合致したときの処理
Case Else
' どの条件にも一致しなかった場合の処理
End Select
1つの変数に対して、複数のケースを分岐できます。
Ifと比較したときの読みやすさ
たとえば点数によって評価を分ける処理、Ifで書くとこうなります:
If score = 100 Then
result = "満点"
ElseIf score >= 80 Then
result = "優"
ElseIf score >= 60 Then
result = "良"
Else
result = "不可"
End If
これをSelect Caseで書くとこうなります:
Select Case score
Case 100
result = "満点"
Case 80 To 99
result = "優"
Case 60 To 79
result = "良"
Case Else
result = "不可"
End Select
見やすさが段違いですよね。
実例:数値に応じてランクを表示する
実際に書いてみましょう:
Dim score As Integer
score = 85
Select Case score
Case 100
MsgBox "満点!"
Case 80 To 99
MsgBox "とてもよくできました"
Case 60 To 79
MsgBox "よくできました"
Case Else
MsgBox "がんばりましょう"
End Select
範囲で条件を指定する方法(To、Is)
Case 80 To 99のように連続した範囲も指定可能。
それ以外にも、Isを使って大小比較もできます。
Select Case score
Case Is >= 90
MsgBox "優秀!"
Case Is >= 70
MsgBox "合格!"
Case Else
MsgBox "再試験…"
End Select
Case Elseでどの条件にも合わない場合を処理
Case Elseは、いずれの条件にも一致しない場合に実行されます。
これは、必ず最後に書いておくのがおすすめです。
予期せぬ値が来たときの保険になります。
Select Caseは文字列にも使える!
数値だけではなく、文字列の判定にも使えます。
Dim answer As String
answer = "いいえ"
Select Case answer
Case "はい"
MsgBox "同意しました"
Case "いいえ"
MsgBox "同意していません"
Case Else
MsgBox "入力が不正です"
End Select
まとめ:Select Caseで分岐をスッキリ書こう!
If~ElseIf~Elseの代わりに使える便利な分岐構文
条件が多いほど、Select Caseの読みやすさが光る
数値だけでなく文字列でも使える
Case Elseで例外対応も忘れずに!

コメント