Select Case~End Select構文での条件分岐

スポンサーリンク

If~End If構文よりもたくさんの分岐を使うときにわかりやすい

複数の条件分岐を書く方法としてSelect Case~End Select構文があります。
Select Case~End Select構文は、If~End If構文で複数の条件分岐を書くよりも一般的で、コードを見たときに処理の内容がわかりやすいメリットがあります。
今回はSelect Case~End Select構文の書き方についてご紹介します。

Select Case~End Select構文の基本的な使い方

前回の複数条件のIf~End If構文のときに使用した以下の表を使います。

条件分岐のサンプル表

Select Case~End Select構文の基本的な使い方は以下のようになります。

Sub 数学の点数で処理を分ける1 ()
Dim i As Integer
For i = 2 To 6
Select Case Cells(i, 2).Value
Case 90
Cells(i, 7).Value = “90点です”
Case 80
Cells(i, 7).Value = “80点です”
Case 70
Cells(i, 7).Value = “70点です”
Case 60
Cells(i, 7).Value = “60点です”
Case 50
Cells(i, 7).Value = “50点です”
Case 40
Cells(i, 7).Value = “40点です”
End Select
Next i
End Sub

スポンサーリンク

Select Case~End Select構文で範囲を指定した条件式

点数の範囲を定めて処理を分岐させる場合は以下のように「To」を用います。

Sub 数学の点数で処理を分ける2()
Dim i As Integer
For i = 2 To 6
Select Case Cells(i, 2).Value
Case 90 To 100
Cells(i, 7).Value = “数学優秀”
Case 70 To 89
Cells(i, 7).Value = “数学まずまず”
Case 0 To 69
Cells(i, 7).Value = “数学もっと頑張れ”
End Select
Next i
End Sub

「,」で区切って「Case 0 To 19 , Case 21 to 69」などのように記載すると20点だけ除外するOrの条件にすることもできますが、この方法では「~未満」は記載できません。

Select Case~End Select構文で~未満などの比較演算子を使用する条件分岐をつける

前回のIf~End If構文のように数学が90点以上で「数学優秀」、70点以上で「数学まずまず」、70点未満で「数学もっと頑張れ」と記入する場合は以下のように「Case Is」と書いて、その後「>=」や「<」などの比較演算子を用いた条件式を書きます。

Sub 数学の点数3段階で分ける2()
Dim i As Integer
For i = 2 To 6
Select Case Cells(i, 2).Value
Case Is >= 90
Cells(i, 7).Value = “数学優秀”
Case Is >= 70
Cells(i, 7).Value = “数学まずまず”
Case Is < 70
Cells(i, 7).Value = “数学もっと頑張れ”
End Select
Next i
End Sub

あまり必要に迫られることはないかもしれませんが、Select Caseの一つの条件式にAndを記載する方法はないようです。その場合は2重の入れ子にするかIf~End If構文を使用しましょう。

コメント