If语句里面还可以有If语句,形成If语句嵌套。每个嵌套的If语句必须具有匹配的End If语句。
例5,根据学生的成绩给出评价,在大于90分的判断上面又加了个If判断,形成If语句的嵌套。
Sub Test()
Dim intA As Integer
intA = 100
If intA >= 90 Then
If intA = 100 Then
debug.Print "天才"
Else '这个else语句和If intA = 100是一对的
debug.Print "优秀"
End If
ElseIf intA >= 70 Then
debug.Print "良好"
ElseIf intA >= 60 Then
debug.Print "一般"
debug.Print "差"
End If
End Sub
以上程序的运行结果如下:
Select Case条件判断语句
Select Case语句在功能与If语句非常相似。执行几组语句之一,具体取决于表达式的值。
有两种形式。
有Else的Select Case条件判断语句
没有Else的Select Case条件判断语句
有Else的Select Case条件判断语句
格式如下:
Select Case 测试表达式
Case 表达式1
' 如果测试表达式等于表达式1,则执行这里的语句
Case 表达式2
' 如果测试表达式等于表达式2,则执行这里的语句
Case 表达式3
' 如果测试表达式等于表达式3,则执行这里的语句
' 后面可以有更多的Case
Case else
' 前面所有的表达式都不满足时,则执行这里的语句
End Select
测试表达式是任何数值表达式或字符串表达式。
例6,把例4的If……elseIf……形式改成Select Case语句的形式。在“Case 表达式” 中间有个Is。这个是用于表达式判断时候用的格式,这样才能够起到类似于If……elseIf……的作用。
Sub Test()
Dim intA As Integer
intA = 59
Select Case intA
Case Is >= 90
Debug.Print "优秀"
Case Is >= 70
Debug.Print "良好"
Case Is >= 60
Debug.Print "一般"
Case Else
Debug.Print "差"
End Select
End Sub
以上程序的运行结果如下:
没有Else的Select Case条件判断语句
格式如下:
Select Case 测试表达式
Case 表达式1
' 如果测试表达式等于表达式1,则执行这里的语句
Case 表达式2
' 如果测试表达式等于表达式2,则执行这里的语句
Case 表达式3
' 如果测试表达式等于表达式3,则执行这里的语句
' 后面可以有更多的Case
End Select
例7,intA是59,没有满足条件的Case语句。
Sub Test()
Dim intA As Integer
intA = 59
Select Case intA
Case Is >= 90
Debug.Print "优秀"
Case Is >= 70
Debug.Print "良好"
Case Is >= 60
Debug.Print "一般"
End Select
End Sub
Case子句中使用多个表达式或范围
例8,Case语句为数字使用多个表达式和范围。
Sub Test()
Dim Number As Integer
Number = 8
Select Case Number
Case 1 To 5 ' 范围1到5
Debug.Print "Between 1 and 5"
Case 6, 7, 8 ' 多个表达式。表达式6,表达式7和表达式8
Debug.Print "Between 6 and 8"
Case 9 To 10 ' 范围9到10
Debug.Print "Greater than 8"
End Select
End Sub
以上程序的运行结果如下:
Between 6 and 8
例9,Case语句为字符串使用多个表达式和范围。
Sub Test()
Dim letter As String
letter = "E"
Select Case letter
Case "A" To "C" ' 范围A到C
Debug.Print "Between A and C"
Case "D", "E" ' 多个表达式。表达式D和表达式E
Debug.Print "Between D and E"
End Select
End Sub
以上程序的运行结果如下:
Between D and E
Select Case语句的嵌套
Select Case语句里面还可以有Select Case语句,形成Select Case语句嵌套。每个嵌套的Select Case语句必须具有匹配的End Select语句。
例10,根据学生的成绩给出评价,在大于90分的判断上面又加了个Select Case判断,形成Select Case语句的嵌套。
Sub Test()
Dim intA As Integer
intA = 100
Select Case intA
Case Is >= 90
Select Case intA
Case 100
Debug.Print "天才"
Case Else
Debug.Print "优秀"
End Select
Case Is >= 70
Debug.Print "良好"
Case Is >= 60
Debug.Print "一般"
Case Else
Debug.Print "差"
End Select
End Sub
以上程序的运行结果如下:
If语句和Select Case语句混合使用
Select Case的嵌套一般用的比较少。上面例10可以将内层的Select Case语句改成If语句,比较容易理解。
例10,根据学生的成绩给出评价,在大于90分的判断上面又加了个Select Case判断,形成Select Case语句的嵌套。
Sub Test()
Dim intA As Integer
intA = 100
Select Case intA
Case Is >= 90
If intA = 100 Then
Debug.Print "天才"
Debug.Print "优秀"
End If
Case Is >= 70
Debug.Print "良好"
Case Is >= 60
Debug.Print "一般"
Case Else
Debug.Print "差"
End Select
End Sub
参考资料:
https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/Select-Case-statement
转载请注明本网址。