ExcelVBA(マクロ)で複数条件に条件分岐する方法/Select Case文の使い方

casino IT

Excelで条件分岐をしていると、だんだん条件が増えてきて、If文がごちゃごちゃしてくることがままあります。
そういう時はSelect Caseを使い、ひとつの条件の中で複数に分岐する方法を使うと式がすっきりします。

Advertisements

Select Case文の使い方

複数条件に分岐
Select Case 対象
Case 条件1
処理1
Case 条件2
処理2

Case Else
いずれでもない場合の処理
End Select
selectcase1
たとえばこのような実力テストの結果があり、
selectcase2
これを点数によってランク付けしたいとします。
selectcase3
これをIf文で書いていくと、まずはFor Nextで繰り返し処理をした上で、
If Range(“A” & i) >= 81 Then
Range(“B” & i).Value = “S”
End If

のように記述してSの処理を行い……。
selectcase4
その下でAの処理を行い、Bの処理を行い……と、どんどんEnd Ifが増えていきます。
はっきり言って見づらいし、処理も多いし、エラーも出しやすくなります。
selectcase5
こういう時こそSelect Caseの出番です。
まずはSelect Case Range(“A” & i)と記述し、どこの値を条件分岐の対象にするかを選択します。
selectcase6
次にCase Is >= 81(値が81以上の時)とするか、
selectcase7
またはCase 81 to 100(値が81から100の時)として、最初の条件とその場合の処理を指定します。
selectcase8
同様に、Aの時、Bの時……と処理を下にくっつけていきます。
この場合Sは61以上でもあるし41以上でもあるし21以上でもあるわけですが、先に書いてある条件にかなった場合後の処理は無視されます。
selectcase9
最後にどれでもなかった場合の処理をCase Elseで指定します。
Case Elseは省略可能です。
selectcase10
Select Caseで判定したい条件を書き終えたら、End Selectで閉じ、Nextで繰り返しも閉じます。
selectcase11
式を実行すると、処理が正しく行われていることが確認できました。
' vba
For i = 2 To 9
Select Case Range("A" & i) ' 条件分岐ここから
Case Is >= 81
Range("B" & i).Value = "S"
Case Is >= 61
Range("B" & i).Value = "A"
Case Is >= 41
Range("B" & i).Value = "B"
Case Is >= 21
Range("B" & i).Value = "C"
Case Else
Range("B" & i).Value = "D"
End Select ' 条件分岐ここまで
Next
やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント