一、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