#077 逆転の発想で使うSelect Caseステートメント VBA

Select Caseステートメントでは、普通は次のように1つの条件式(Tokuten)に対していくつかのCase節を使って評価を行います。
Select Case Tokuten
  Case Is >= 80 
    Lank = "A"
  Case Is >= 50
    Lank = "B"
  Case Else
    Lank = "C"
End Select

しかし条件式が少し複雑になった場合、例えば"Tokuten1"と"Tokuten2"の2つの値の組合せによって評価するような場合には、上記のようなSelect Caseステートメントの使い方では対応できません。次のようにIf〜Then〜Elseステートメントを使うことになります。
IfTokuten1 >= 80 And Tokuten2 >= 80 Then
  Lank = "A"
ElseIf (Tokuten1 >= 50 And Tokuten2 >= 50) And _
        (Tokuten1 >= 80 Or Tokuten2 >= 80) Then
  Lank = "B"
ElseIf Tokuten1 >= 50 And Tokuten2 >= 50 Then
  Lank = "C"
Else
  Lank = "D"
End If

ここで、Select Caseステートメントの条件式とCase節の評価式の関係を反対に考えてみます。つまり、『もし得点が80点以上なら・・・・・』『もし"得点が80点以上"が真なら』と考えます。さらに進んで『もし 真(True) = "得点が80点以上" なら』と考えると、上の複雑な条件式でもSelect Caseステートメントで表現することができます。
Select Case True
  Case Tokuten1 >= 80 And Tokuten2 >= 80
    Lank = "A"
  Case (Tokuten1 >= 50 And Tokuten2 >= 50) And _
        (Tokuten1 >= 80 Or Tokuten2 >= 80)
    Lank = "B"
  Case Tokuten1 >= 50 And Tokuten2 >= 50
    Lank = "C"
  Case Else
    Lank = "D"
End Select
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved