VB中如何使用select case語句
語法 Select Case <指示變量或表達式><默認語句組,以上語句組都因情形不符合實際時執行> End Select 其中,表述情形的關鍵字,有IS和TO,多個情形要并列在一起時,使用逗號(英文)連接。
當省略Case Else語句并且語句組都因情形不符合實際時,語句的執行,會直接到達End Select。如果在執行語句的時候,有需要跳過沒有必要再執行的語句而直接結束Select Case的情況時,請使用exit select。
注意 在“<指示變量或表達式>”不是True或False關鍵字時,邏輯運算(And、Or、Not)會沒有意義。因為邏輯運算的結果是True或False,不是表述具體情況的值或者范圍。
需要比較大小時,請使用IS、To關鍵字。以上為了給出一個能夠通用的語法而如此表述。
在“<指示變量或表達式>”是True或False關鍵字時,Is、To關鍵字沒有意義。以上兩種情況,切記不要搞混。
嵌套 各語句組中也可以寫入完整的Select Case語句,像For循環中嵌套一個二級循環一樣。別誤會,Select Case不是循環語句,是條件選擇語句,與IF。
ELSEIF。ELSEIF。
END IF類似。基本用法 Private Sub main() Select Case InputBox("請輸入你希望的天氣,從晴天、多云、陰天、陣雨、小雨、小雪、冰雹中選一個填入。
", "請輸入你希望的天氣", "晴天") Case "晴天" MsgBox "哇哦!你喜歡的是晴天啊,祝你天天好心“晴”~!" Case "多云" MsgBox "喜歡多云的天氣,是因為比較怕紫外線嗎?" Case "陰天" MsgBox "為什么喜歡陰天呢?真令人好奇啊~!" Case "陣雨" MsgBox "為什么喜歡陣雨天呢?真令人好奇啊~!" Case "小雨" MsgBox "為什么喜歡小雨天呢?真令人好奇啊~!" Case "小雪" MsgBox "為什么喜歡小雪天呢?真令人好奇啊~!" Case "冰雹" MsgBox "為什么喜歡冰雹天呢?真令人好奇啊~!" Case Else MsgBox "不可以醬紫!只能從我給出的幾種中挑選一個填入!" End Select End Sub 使用關鍵字IS Private Sub main() Select Case Day(Now) Case Is <= 10 MsgBox "目前是本月上旬!" Case Is > 20 MsgBox "目前是本月下旬!" Case Else MsgBox "目前是本月中旬!" End Select End Sub<以上代碼在VB6.0測試通過> 使用關鍵字TO Private Sub main() Select Case Weekday(Now) Case 1, 7 MsgBox "今天是周末!" Case 2 To 6 MsgBox "今天不是周末!" End Select End Sub<以上代碼在VB6.0測試通過> 關鍵字IS和TO可以根據需要,在同一條情形中一起使用,例如 Case Is<=5,8 to 10,Is>20 不過要注意的是,TO表示的區間,是閉區間,不適用于開區間(或半閉半開區間)。如果一定要用select Case來確定數值在哪個區間內,可以這么做:Private Sub main() On Error GoTo err Dim num As Single num = InputBox("請輸入!") Select Case num Case Is <= 1 MsgBox "這個數不大于1" Case Is < 3 MsgBox "這個數在1和3之間的開區間內" Case Is < 5 MsgBox "這個數在3和5之間的半閉半開區間內" Case Is <= 7 MsgBox "這個數在5和7之間的閉區間內" Case Is > 7 MsgBox "這個數大于7" End Select Exit Sub err:MsgBox "這個不是可比較的數字" End Sub 此時,各Case不能隨便對換順序。
雖然這個可以達到我們想要的效果,卻因為不夠嚴謹,讓我憂心忡忡。那么什么是最嚴謹的呢?請看高級用法。
高級用法 語法(這里只是為了更好的理解,稍稍變一下表述,不改變實意。) Select Case true Case <邏輯運算表達式1><語句組1> Case <邏輯運算表達式2><語句組2>。
.Case <邏輯運算表達式n><語句組n> Case Else<默認語句組,當以上任何邏輯運算都為False時執行> End Select 在此語法下,Is、To關鍵字沒有意義,Is的值為true(Is是變量嗎?這個問題真的好讓人回味啊) 只要邏輯運算表達式的運算結果為true,就執行該Case下的語句組。那么,上面的例子就這么改。
Private Sub main() On Error GoTo err Dim num As Single num = InputBox("請輸入!") Select Case True Case num >= 5 And num <= 7 MsgBox "這個數在5和7之間的閉區間內" Case num < 3 And num > 1 MsgBox "這個數在1和3之間的開區間內" Case num > 7 MsgBox "這個數大于7" Case num < 5 And num >= 3 MsgBox "這個數在3和5之間的半閉半開區間內" End Select Exit Sub err:MsgBox "這個不是可比較的數字" End Sub 可以看到,順序被我隨意變動了,測試也通過了。那么,愛琢磨的我,又發現一個問題:Select Case True可以改成Select Case False嗎?答案是,可以。
這里就不作示例了,只給出語法 Select Case False Case <邏輯運算表達式1><語句組1> Case <邏輯運算表達式2><語句組2>。.Case <邏輯運算表達式n><語句組n> Case Else<默認語句組,當以上任何邏輯運算都為true時執行> End Select 只要邏輯運算表達式的運算結果為False,就執行該Case下的語句組。
vb case 語句
這樣改,我試好沒問題了
仔細看下區別吧
Dim x As Single, y As String
Private Sub Command1_Click()
x = InputBox(prompt, "輸入成績", 0)
End Sub
Private Sub Command2_Click()
Print x
Select Case Val(x)
Case Is >= 90
Print "優秀"
Case Is >= 80
Print "良好"
Case Is >= 70
Print "中等"
Case Is >= 60
Print "及格"
Case Else
Print "不及格"
End Select
End Sub
Private Sub Form_Load()
*n = "輸入成績"
*n = "劃分等級"
End Sub
VB CASE語句
呵呵,題外話,題目中的象限設置錯了,y<0且x>0怎么會在第二象限?是在第四象限。改成Case語句是下面的代碼:
Private Sub Command1_Click()
Dim x#, y#
x = Val(*)
y = Val(*)
Select Case True
Case x > 0 And y > 0
Print "點在第一象限"
Case x < 0 And y > 0
Print "點在第二象限"
Case x < 0 And y < 0
Print "點在第三象限"
Case x > 0 And y < 0
Print "點在第四象限"
Case Else
Print "點在坐標軸上"
End Select
End Sub