たまに見かけます。言葉ではうまく説明できませんが下記のようなことです。
VB - Select Case で多重評価
' 複数の RadioButton の値によって処理を分岐する
Select Case True
Case Me.RadioButton1.Checked : Me.Execute1()
Case Me.RadioButton2.Checked : Me.Execute2()
Case Me.RadioButton3.Checked : Me.Execute3()
Case Else : Throw New System.Exception()
End Select
' 評価対象が複数ある分岐を Select Case によって簡素化する
Select Case True
Case x > 1 : Me.Execute1()
Case y <= 0 : Me.Execute2()
Case z = 0 : Me.Execute3()
End Select
Select Case ステートメントは単一の評価によって多重分岐する時に使うものであるべきだと思います。気持ちはわからないまでもないですが、このような簡素化は癌になると思います。素直に If ~ Then ~ ElseIf ~ Else ~ End If を書いた方がまだ全然良いです。
VB - If ~ Then ~ ElseIf ~ Else ~ End If で多重評価
' RadioButton の値によって処理を分岐する
If Me.RadioButton1.Checked Then
Me.Execute1()
ElseIf Me.RadioButton2.Checked Then
Me.Execute2()
ElseIf Me.RadioButton3.Checked Then
Me.Execute3()
Else
Throw New System.Exception()
End If
' 複雑な条件を Select Case によって簡素化して分岐する
If x > 1 Then
Me.Execute1()
ElseIf y <= 0 Then
Me.Execute2()
ElseIf z = 0 Then
Me.Execute3()
End If
これが汚らしいと感じたり関連が薄いと思うのであれば、ガード句を使った方が良いかもしれません。コメントの場所にも困らずに済みます。
VB - ガード句を使って単一評価ごとに分断する
' RadioButton1 が選択されている場合は処理 1 を行う
If Me.RadioButton1.Checked Then
Me.Execute1()
Return
End If
' RadioButton2 が選択されている場合は処理 2 を行う
If Me.RadioButton2.Checked Then
Me.Execute2()
Return
End If
' RadioButton3 が選択されている場合は処理 3 を行う
If Me.RadioButton3.Checked Then
Me.Execute3()
Return
End If
' ここまで来るような流れがあるなら「例外」をスローせざるを得ない (ネタ元: 龍虎の拳)
Throw New System.Exception()
' 処理 1 を行う
If x > 0 Then
Me.Execute1()
Return
End If
' 処理 2 を行う
If y <= 0 Then
Me.Execute2()
Return
End If
' 処理 3 を行う
If z = 0 Then
Me.Execute3()
Return
End If
これは、Select Case はもっと使える - Visual Basic 中学校 [nifty.com] を拝見して思い出したかのように書いた記事ですが前提条件が間違っておりました。謹んでお詫び申し上げます。それとは別の話になりますが、5. はバグの温床にしかならないので利用は避けた方が良いと思います。