另一个If或ElseIf语句内的If或ElseIf语句。内部If语句的执行基于最外面的If语句。这使VBScript可以处理复杂的条件。
句法
If (Boolean_expression) Then
Statement 1
........
........
........
Statement n
If (Boolean_expression) Then
Statement 1
.........
.........
Statement n
ElseIf (Boolean_expression) Then
Statement 1
.........
.........
Statement n
Else
Statement 1
.........
.........
Statement n
End If
Else
Statement 1
.........
.........
Statement n
End If
流程图
文章图片
在嵌套语句中, VBA甚至会在评估True条件(并执行其关联的语句)后遍历每个If … Then条件, 而在ElseIf结构中, 在评估True条件后会跳过以下所有条件。
在这种情况下, ElseIf结构会更快。因此, 如果可以使用ElseIf结构完成嵌套语句, 则嵌套语句可能不包含非常有效的方法。
例如:假设你想编写一个代码, 如果学生分数大于或等于80, 则返回优秀消息。根据以下示例所示的判定标准, 返回良好, 平均和不良, 例如:
Sub Macro1()
Dim sngMarks As Single
sngMarks = 70
If sngMarks >
= 80 Then
MsgBox "Excellent"
End If
If sngMarks >
= 60 And sngMarks <
80 Then
MsgBox "Good"
End If
If sngMarks >
= 40 And sngMarks <
60 Then
MsgBox "Average"
End If
If sngMarks <
40 Then
MsgBox "Poor"
End If
End Sub
文章图片
在VBA中运行上面的代码, 你将获得输出, 如下面的屏幕快照所示。
文章图片
例
让我们借助一个函数找到Excel的正数。
Private Sub nested_If_demo_Click ()
Dim x As Integer
x = 30
If x >
0 Then
MsgBox "a number is a positive number"
If x = 1 Then
MsgBox "A number is neither prime nor composite"
ElseIf x = 2 Then
MsgBox "A number is the only prime even prime number"
ElseIf x = 3 Then
MsgBox "A number is the least odd prime number"
Else
MsgBox "The number is not 0, 1, 2, or 3"
End If
Else If x <
0 Then
MsgBox "A number is a negative number"
Else
MsgBox "the number is zero"
End If
End Sub
【嵌套的if语句】执行完上面的代码后, 你将获得如下输出:
A number is a positive number
The number is not 0, 1, 2, or 3