Select Case 是 VBScript 處理多重條件判斷的最佳結構,程式碼清晰、效率優於多層 If...ElseIf,特別適合「單一運算式對比多個離散值」的情境。
Select Case <測試運算式>
[Case <運算式1>
[陳述句區塊1]]
[Case <運算式2>
[陳述句區塊2]]
...
[Case Else
[其他陳述句區塊]]
End Select
Case 運算式比對。Select Case True 技巧(見範例 2)。Case 皆不符合時執行,可省略。Case 後自動跳出,不會落入後續 Case(無 Fall-through 行為)。<html>
<head><title>顏色選擇器</title>
<Script Language="VBScript">
<!--
Sub bchange(choice)
Select Case choice
Case 1 : document.bgColor = "#9AD3AF" ' 淺綠
Case 2 : document.bgColor = "#F3FAC5" ' 淺黃
Case 3 : document.bgColor = "#CDC8F7" ' 淺紫
Case 4 : document.bgColor = "#F8C7DA" ' 淺粉
Case 5 : document.fgColor = "#69011C" ' 深紅
Case 6 : document.fgColor = "#264436" ' 深綠
Case 7 : document.fgColor = "#D76817" ' 橘黃
Case 8 : document.fgColor = "#544976" ' 深藍
End Select
End Sub
-->
</Script>
</head>
<body>
<center><h2>背景與文字顏色選擇</h2>
<table border="2">
<tr><th>背景顏色<th>選擇<th>文字顏色<th>選擇</tr>
<tr><td>淡綠<td><input type="radio" onClick="bchange(1)"><td>深紅<td><input type="radio" onClick="bchange(5)"></tr>
<tr><td>淡黃<td><input type="radio" onClick="bchange(2)"><td>深綠<td><input type="radio" onClick="bchange(6)"></tr>
<tr><td>淡紫<td><input type="radio" onClick="bchange(3)"><td>桔黃<td><input type="radio" onClick="bchange(7)"></tr>
<tr><td>淡粉<td><input type="radio" onClick="bchange(4)"><td>深藍<td><input type="radio" onClick="bchange(8)"></tr>
</table>
</center>
</body>
</html>
說明:此為客戶端 VBScript(需 IE),透過 onClick 觸發 Select Case 切換 document.bgColor/fgColor。
<html>
<head><title>時間問候語</title></head>
<body>
<%
Dim aa, bb, cc, dd, ee, ff, my_time
my_time = Time()
aa = #00:00:00# : bb = #07:00:00# : cc = #12:00:00#
dd = #14:00:00# : ee = #20:00:00# : ff = #23:59:59#
x = Time()
Select Case True
Case x >= aa And x < bb : Response.Write "早上好,歡迎光臨!"
Case x >= bb And x < cc : Response.Write "上午好,歡迎光臨!"
Case x >= cc And x < dd : Response.Write "中午好,歡迎光臨!"
Case x >= dd And x < ee : Response.Write "下午好,歡迎光臨!"
Case x >= ee And x < ff : Response.Write "晚上好,歡迎光臨!"
End Select
%>
</body>
</html>
關鍵技巧:Select Case True 將每個 Case 變為布林運算式,實現區間/複合條件判斷,比 If...ElseIf 更易讀。
| 維度 | Select Case | If...ElseIf |
|---|---|---|
| 測試運算式評估次數 | 一次 | 每個條件各評估一次 |
| 適合情境 | 單一值對比多個離散值/區間 | 複雜複合條件、不同變數判斷 |
| 程式碼可讀性 | 結構清晰、易維護 | 層級過深時易混淆 |
| Fall-through | 無(符合即跳出) | 需自行控制 |
End Select:導致編譯錯誤「Expected 'End Select'」。Case 寫字串,永不匹配。Select Case 不支援 Fall-through,若需多值共用邏輯,請用逗號分隔:Case 1, 3, 5。Option Compare Binary,若需不分大小寫,檔案頂端加 Option Compare Text。善用 Select Case 讓條件判斷邏輯一目瞭然,是寫出可維護 VBScript 代碼的關鍵習慣。