20130608

VBScript 條件式


使用 If...Then...Else 做選擇

If...Then...Else 陳述式依據條件是 True 或是 False,來執行一個或更多個陳述式。
條件通常是比較運算式,比較兩個數值或變數。
If...Then...Else 陳述式能使用多層巢狀結構。

看門(guard)

若您在條件為 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 結構。

沒有留言:

張貼留言