本文内容
- 语法
- 备注
- 示例
- 另请参阅
根据表达式的值,有条件地执行一组语句。
语法
If condition Then [ statements ] [ Else elsestatements ]
或者,可以使用块格式语法:
如果 条件 Then [ 语句 ][ ElseIf condition-n Then [ elseifstatements ]][ Else [ elsestatements ]] End If
If...然后。。。Else 语句语法包含以下部分。
|
Part |
说明 |
|
条件 |
必填。 一个或多个以下两种类型的表达式: 计算结果为 True 或 False 的 数值表达式 或 字符串表达式 。 如果 condition 为 Null, 则 condition 被视为 False 。 TypeOf objectname Is objecttype 窗体的表达式。 objectname 是任何对象引用, objecttype 是任何有效的对象类型。 如果 objectname 为 objecttype 指定的对象类型,则表达式为 True ;否则为 False 。 |
|
statements |
在块格式中为可选;在没有 Else 子句的单行格式中为必需。 由冒号分隔的一个或多个语句;在 condition 为 True 时执行。 |
|
condition-n |
可选。 与 condition 相同。 |
|
elseifstatements |
可选。 在关联的 condition-n 为 True 时执行的一个或多个语句。 |
|
elsestatements |
可选。 在前面的 condition 或 condition-n 表达式均不为 True 时执行的一个或多个语句。 |
备注
使用单行形式 (第一个语法) 进行简短的简单测试。 但块格式(第二个语法)可提供比单行格式更多的结构和更大的灵活性,并且通常更容易读取、维护和调试。
备注
使用单行格式时,可能会由多个语句作为 If...Then 的结果执行。 所有语句都必须位于同一行上并由冒号分隔,如以下语句所示:
VB复制
If A > 10 Then A = A + 1 : B = B + A : C = C + B
块格式的 If 语句必须是行上的第一个语句。 语句的 Else 、 ElseIf 和 End If 组成部分的前面只能有一个行号或行标签。 If 块必须以 End If 语句结尾。
若要确定语句是否为块 If ,请检查 Then 关键字后面的内容。 如果同一行中出现在 Then 后面的内容不是 注释 ,该语句将被视为单行 If 语句。
Else 和 ElseIf 子句都是可选的。 一个 If 块中可以有任意所需数量的 ElseIf 子句,但都必须出现在 Else 子句前面。 If 块语句可以嵌套;即,相互包含。
在执行 If 块(第二个语法)时,将检验 condition 。 如果 condition 为 True ,将执行 Then 后面的语句。 如果 condition 为 False ,将依次计算每个 ElseIf 条件(如果有)。 找到 True 条件时,将执行紧跟关联的 Then 的语句。 如果所有 ElseIf 条件均不为 True (或者不存在 ElseIf 子句),则执行 Else 后面的语句。 执行 Then 或 Else 后面的语句后,将继续执行 End If 后面的语句。
提示
在计算具有多个可能操作的单个表达式时, 选择“Case” 可能更有用。 但是, TypeOf objectname Is objecttype 子句不能与 Select Case 语句一起使用。
备注
TypeOf 不能与硬性数据类型(如 Long、Integer 和 Object 之外的其他类型)一起使用。
示例
此示例显示块格式和单行格式的 If...Then...Else 语句。 它还演示 If TypeOf...Then...Else 的用法。
VB复制
Dim Number, Digits, MyString
Number = 53 ' Initialize variable.
If Number < 10 Then
Digits = 1
ElseIf Number < 100 Then
' Condition evaluates to True so the next statement is executed.
Digits = 2
Else
Digits = 3
End If
' Assign a value using the single-line form of syntax.
If Digits = 1 Then MyString = "One" Else MyString = "More than one"
使用 If TypeOf 构造可确定传入过程中的控件是否为文本框。
VB复制
Sub ControlProcessor(MyControl As Control)
If TypeOf MyControl Is CommandButton Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is CheckBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
ElseIf TypeOf MyControl Is TextBox Then
Debug.Print "You passed in a " & TypeName(MyControl)
End If
End Sub