Microsoft® Visual Basic® Scripting Edition
使用條件陳述式
 VBScript 教學 
 上一頁 | 下一頁 


控制程式的執行
您可以使用條件陳述式和迴圈陳述式來控制 script 的流程。使用條件陳述式,您就可以撰寫出執行選擇和重複動作的 VBScript 程式碼。VBScript 中包含了下列的條件陳述式:
使用 If...Then...Else 做選擇
If...Then...Else 陳述式會檢查條件是 True 或是 False,然後再依據這個結果來執行一個或更多個陳述式。條件通常是一個使用比較運算子的運算式,它會比較兩個數值或變數。關於比較運算子的更進一步資訊,請參考比較運算子。您可以在 If...Then...Else 陳述式中依您所需的使用多層巢狀結構。

在條件為 True 時執行陳述式
若您在條件為 True 時只要執行一個陳述式,您就可以使用 If...Then...Else 陳述式的單行語法。下面就是一個單行語法的範例。請注意,這個範例省略了 Else 關鍵字。
 Sub FixDate()
     Dim myDate
     myDate = #2/13/95#
     If myDate < Now Then myDate = Now
 End Sub
如果您要執行超過一行以上的程式碼時,您就必須使用多行(或區塊)語法。這個語法包含了一個 End If 陳述式,如下例所示:
 Sub AlertUser(value)
     If value = 0 Then
         AlertLabel.ForeColor = vbRed
         AlertLabel.Font.Bold = True
         AlertLabel.Font.Italic = True
     End If
 End Sub
在條件是 True 時執行某幾個陳述式,條件是 False 時執行其它的陳述式
您可以使用 If...Then...Else 陳述式來定義兩個執行區塊:一個區塊在條件是 True 時執行,另一個則是在條件是 False 時執行。
 Sub AlertUser(value)
     If value = 0 Then
         AlertLabel.ForeColor = vbRed
         AlertLabel.Font.Bold = True
         AlertLabel.Font.Italic = True
     Else
         AlertLabel.Forecolor = vbBlack
         AlertLabel.Font.Bold = False
         AlertLabel.Font.Italic = False
     End If
 End Sub
在多種選擇中做決定
一個 If...Then...Else 陳述式的變形可以讓您從多種選擇中選取一種選擇。加上 ElseIf 子句的 If...Then...Else 陳述式可以擴充其功能,這樣能讓您的程式有多種不同的流程。舉例來說:
 Sub ReportValue(value)
     If value = 0 Then
         MsgBox value
     ElseIf value = 1 Then
         MsgBox value
     ElseIf value = 2 then
         Msgbox value
     Else
         Msgbox "Value out of range!"
     End If
您可以依您所需的加上多個 ElseIf 子句以提供其它選項。ElseIf 子句用的太多常常會變成一種麻煩。一個在多種選項之中選擇的較佳辦法是使用 Select Case 陳述式。
使用 Select Case 做選擇
Select Case 結構提供了 If...Then...ElseIf 外的另一種方式,讓您從多個陳述式區塊中選擇一個出來執行。Select Case 陳述式提供的功能和 If...Then...Else 陳述式類似,但它可使程式更加的有效率,且可讀性更高。

Select Case 結構在其前端有一個測試運算式,這個運算式只會被執行一次。執行完的結果將被拿來和每一個 Case 的值做比較。如果有相符的情形時,這個 Case 區塊中的陳述式就會被執行:

 Select Case Document.Form1.CardType.Options(SelectedIndex).Text
    Case "MasterCard"
        DisplayMCLogo
        ValidateMCAccount
    Case "Visa"
        DisplayVisaLogo
        ValidateVisaAccount
    Case "American Express"
        DisplayAMEXCOLogo
        ValidateAMEXCOAccount
    Case Else
        DisplayUnknownImage
        PromptAgain
End Select
請注意到 Select Case 結構只在前端執行一個運算式。相反的, If...Then...ElseIf 結構則可在每一個 ElseIf 陳述式後面執行一個不同的運算式。只有在每一個 ElseIf 陳述式使用的都是同一個運算式時,您才能用 Select Case 結構取代 If...Then...ElseIf 結構。