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 结构。

[an error occurred while processing this directive]