複数の条件で判定を評価するVBA~Select Case

exce-vba VBA
Ifでも以上以下の条件分岐

If~Thenを覚えたのに、複数条件を複数の答えだすVBAで悩みませんでしたか

<span class="fz-12px">とりっぷぼうる</span>
とりっぷぼうる

例えばテストの結果で5段階評価することありませんか?

テストの結果が90点以上ならA、70点~89点の間はB、50点~69点はC、30点~49点はD、29点以下はEなんて評価をVBAを使って一瞬で判定どうやるんだろうって。

いつものようにユーザーフォームに配置したコマンドボタンを押すことにより、処理を実行するVBAコードを書いていきます。

スポンサーリンク

If~Thenでもできるけど・・・

VBAに取り組んで最初に覚える条件分岐といえば、If~Thenですよね。

ElseIfで続ければ、「もし○○だったら、A、そうでなかったらBというように2つの条件を2つの答えで処理を振り分けられます。

と、いうことは・・・

そうです、つづけてElseIfをやり続ければ5段階評価ぐらいなら可能なので、まずは○×評価のおさりです。

If~then ElseIfで○×判定するVBAコード

Private Sub CommandButton1_Click()
If Range(“C3”).Value >= 90 Then
Range(“D3”).Value = “〇”
ElseIf Range(“C3”).Value <= 30 Then
Range(“D3”).Value = “×”
End If
End Sub

これで90点以上ならば〇、29点以下×を隣のセルD3に記載しました。

If~Then ElseIfで5段階評価するVBAコード

Private Sub CommandButton10_Click()
If Range(“C3”).Value >= 90 Then
Range(“D3”).Value = “A”
ElseIf Range(“C3”).Value >= 70 And Range(“C3”).Value <= 89 Then
Range(“D3”).Value = “B”
ElseIf Range(“C3”).Value >= 50 And Range(“C3”).Value <= 69 Then
Range(“D3”).Value = “C”
ElseIf Range(“C3”).Value >= 30 And Range(“C3”).Value <= 49 Then
Range(“D3”).Value = “D”
ElseIf Range(“C3”).Value <= 29 Then
Range(“D3”).Value = “E”
End If
End Sub

ずいぶん長くなりましたが、複数条件と言っても5つしかないのでそんなに面倒ではないですが、印刷枚数を指定する時などは、30枚となれば、今の6倍の長さになってしまうのは現実的に無理ですよね。

そこでお待たせしました、複数条件で処理を振り分けるSelect Caseステートメントを使いましょう。

スポンサーリンク

Select Caseステートメント

Select Caseを使うと、1つ目の条件に合致すると処理を実行して、条件に合わないと次の2つ目の条件に移って処理を続け、2つ目の条件が合致すると実行、さらに条件に合わないと次の条件、3つ目に移るという具合です。

要するに、条件に合うまで次から次へと処理を行ってくれる便利なものです。

最初にも書きましたが、テストの結果が90点以上ならA、70点~89点の間はB、50点~69点はC、30点~49点はD、29点以下はEと5段階評価もこのようなイメージになります。

Select Case 条件判断する特定のセルの値などの対象
Case 条件式1
対象が条件式1と合致する時の処理
Case 条件式2
対象が条件式2と合致する時の処理
・・・
・・・
・・・
End Select

では、実際にVBAコードで書いてみましょう。

Select Caseで5段階評価

Private Sub CommandButton1_Click()
Select Case Range(“C3”).Value
Case Is >= 90
Range(“D3”).Value = “A”
Case 70 To 89
Range(“D3”).Value = “B”
Case 50 To 69
Range(“D3”).Value = “C”
Case 30 To 49
Range(“D3”).Value = “D”
Case Is <= 29
Range(“D3”).Value = “E”
End Select
End Sub

VBA解説
  1. コマンドボタン1が押されたら
  2. Select Caseステートメントを使いセルC3の値を参照
  3. 90点以上なら
  4. A評価をセルD3に記載
  5. 70点~89点の場合
  6. B評価をセルD3に記載
  7. 50点~69点の場合
  8. C評価をセルD3に記載
  9. 30点~499点の場合
  10. D評価をセルD3に記載
  11. 29点以下の場合
  12. E評価をセルD3に記載
  13. Select Caseステートメント終了
  14. マクロ終了

If~Then ElseIfを使うよりもシンプルになりましたし、それほど難しくないですよね。

上のコードのようにSelect CaseステートメントのCaseの後の計算式(比較演算子)はいくつかパターンがあります。

使用しているのは以上・間・以下を使っていますが、その他成績表の評価などで使ったことのあるものを書き出してみました。

VBAコードの書き方意味
Case 100100点の時(完全一致)
Case Is >= 8080点以上の時
Case Is > 8080点より大きい時(81点以上と同じ)
Case Is <= 4040点以下の時
Case Is < 4040点未満の時(39点以下と同じ)
Case 41 To 7941点以上79点以下
Case 0,””0点または空欄(未受験)

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