一、Select Case文法及參數介紹
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Select
Select Case 語句的文法具有以下幾個部分:
testexpression 必要參數。任何數值運算式或字串運算式。
expressionlist-n 如果有 Case 出現,則為必要參數。其形式為 expression,expression To expression,Is comparisonoperator expression的一個或多個組成的分界列表。To 關鍵字可用來指定一個數值範圍。如果使用 To 關鍵字,則較小的數值要出現在 To 之前。使用 Is 關鍵字時,則可以配合比較子(除 Is 和 Like 之外)來指定一個數值範圍。如果沒有提供,則 Is 關鍵字會被自動插入。
statements-n 選擇性參數。一條或多條語句,當 testexpression 匹配expressionlist-n中的任何部分時執行。
elsestatements 選擇性參數。一條或多條語句,當 testexpression 不匹配 Case 子句的任何部分時執行。
如果 testexpression 匹配某個 Case expressionlist 運算式, 則在 Case 子句之後,直到下一個 Case 子句的 statements 會被執行;如果是最後一個子句,則會執行到 End Select。然後控制權會轉移到 End Select 之後的語句。如果 testexpression 匹配一個以上的 Case 子句中的 expressionlist 運算式,則只有第一個匹配後面的語句會被執行。
Case Else 子句用於指明 elsestatements,當 testexpression 和所有的 Case 子句中的 expressionlist 都不匹配時,則會執行這些語句。雖然不是必要的,但是在 Select Case 區塊中,最好還是加上 Case Else 語句來處理不可預見的 testexpression 值。如果沒有 Case expressionlist 匹配 testexpression,而且也沒有 Case Else 語句,則程式會從 End Select 之後的語句繼續執行。
二、Select Case的例子
①儲存格範圍B1:B5內,儲存格的值=1→紅色,=2→黃色,=3→水色,=以外→綠色
Dim myRng As Range
Dim c As Range
Dim myColor As Integer
Set myRng = Range("B1:B5")
For Each c In myRng
Select Case c.Value
Case 1
myColor = 3 '紅
Case 2
myColor = 6 '黃
Case 3
myColor = 8 '水色
Case Else
myColor = 10 '緑
End Select
c.Interior.ColorIndex = myColor
Next c
②儲存格範圍B1:B5內,儲存格的值<10→紅色,<20→黃色,<30→水色,以外→綠色
Dim myRng As Range
Dim c As Range
Dim myColor As Integer
Set myRng = Range("B1:B5")
For Each c In myRng
Select Case c.Value
Case Is < 10
myColor = 3 '紅
Case Is < 20
myColor = 6 '黃
Case Is < 30
myColor = 8 '水色
Case Else
myColor = 10 '緑
End Select
c.Interior.ColorIndex = myColor
Next c