If...Then...Else 语句 (Visual Basic)

更新:2007 年 11 月

根据表达式的值,有条件地执行一组语句。

If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If
-or-
If condition Then [ statements ] [ Else [ elsestatements ] ]

各部分说明

  • condition
    必选。表达式。计算结果必须为 True 或 False,或者是某种可隐式转换为 Boolean 的数据类型。

  • Then
    在单行格式中为必选项,在多行格式中为可选。

  • statements
    可选。跟在 If...Then 后面的一条或多条语句,如果 condition 的计算结果为 True,则执行这些语句。

  • elseifcondition
    如果存在 ElseIf,则为必选项。表达式。计算结果必须为 True 或 False,或者是某种可隐式转换为 Boolean 的数据类型。

  • elseifstatements
    可选。跟在 ElseIf...Then 后面的一条或多条语句,如果 elseifcondition 的计算结果为 True,则执行这些语句。

  • elsestatements
    可选。一条或多条语句,如果前面的 condition 或 elseifcondition 表达式的计算结果都不是 True,则会执行这些语句。

  • End If
    终止 If...Then...Else 块。

备注

可以将单行格式用于短小简单的测试。但是,多行格式比单行格式提供更多的结构和灵活性,并且通常更易于阅读、维护和调试。

当遇到多行 If...Then...Else 时,将测试 condition。如果 condition 为 True,则会执行 Then 之后的语句。如果 condition 为 False,则按顺序计算每个 ElseIf 语句。如果找到某个值为 True 的 elseifcondition,则会执行紧跟在关联的 Then 之后的语句。如果没有任何 elseifcondition 的计算结果为 True,或者没有 ElseIf 语句,则会执行 Else 之后的语句。执行了 Then、ElseIf 或 Else 后面的语句之后,将继续执行 End If 之后的语句。

提示:

当计算具有若干可能值的单个表达式时,Select...Case 语句 (Visual Basic) 可能会更有用。

在单行格式中,作为 If...Then 判定的结果可能执行多条语句。所有语句必须位于同一行上,并且由逗号分隔。下面的示例说明了这一点。

If A > 10 Then A = A + 1 : B = B + A : C = C + B

在多行格式中,第一行只能是 If 语句。ElseIf、Else 和 End If 语句的前面只能有行标签。多行 If...Then...Else 块必须以 End If 语句结尾。

若要确定 If 语句是否引入多行格式,请检查 Then 关键字后面的内容。如果同一语句中的 Then 后面出现注释以外的任何其他内容,则该语句将被视为单行的 If 语句。如果 Then 不存在,则它必须是多行 If...Then...Else 的开头。

ElseIf 和 Else 子句都是可选。可以根据需要在多行 If...Then...Else 放置任意多个 ElseIf 子句,但任何一个都不能出现在 Else 子句的后面。多行格式可以嵌套在另一个多行格式中。

示例

下面的示例显示多行格式和单行格式的 If...Then...Else 语句。

Dim number, digits As Integer
Dim myString As String
number = 53
If number < 10 Then
    digits = 1
ElseIf number < 100 Then
    digits = 2
Else
    digits = 3
End If
If digits = 1 Then myString = "One" Else myString = "More than one"

在前面的示例中,ElseIf 条件的计算结果为 True,并将值 2 赋给了 digits。最后一个语句随后将值“More than one”赋给 myString。

请参见

参考

#If...Then...#Else 指令

Choose 函数

Select...Case 语句 (Visual Basic)

Switch 函数