回覆列表
  • 1 # 這名字挺不錯

    語法

    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下的語句組。

  • 中秋節和大豐收的關聯?
  • SD儲存卡被防寫怎樣格式化或刪除檔案?高手幫忙啊?