【烟花原创】VBA零基础之第15篇 Select Case 语句
上一篇的咱们聊了IF…Then…Else语句,在块形式的IF判断中,如果条件比较多,IF…Then…Else 语句会计算每个Elseif 语句的表达式,另外当条件多时,Elseif对于代码的可读性大打折扣。
今天我们聊聊Select Case 语句,在这些方面可以弥补IF…Then..Else不足。
先看看Select case的语法:
Select Case 测试表达式
Case 表达式列表1
语句1
Case 表达式列表2
语句2
Case 表达式列表n
语句n
Case Else
语句
End Select
测试表达式:必要参数,任何数值表达式,字符串表达式或逻辑表达式
表达式列表:如果有Case出现,则为必要参数。
形式有以下几种:
A.表达式
Dim strTest
strTest = 1
Select Case strTest
Case 1:
MsgBox "1"
Case "A"
MsgBox "A"
Case Else
MsgBox "未知值"
End Select
B. 表达式 TO 表达式
要求较小的表达式要出现在TO的前面
Dim Chenji As Integer
Chenji = 50
Select Case Chenji
Case 90 To 100
'成绩在90到100区间
MsgBox "优秀"
'成绩在90到100区间
MsgBox "优秀"
Case 80 To 89
'成绩在80到89区间
MsgBox "优好"
Case 60 To 79
'成绩在60到79区间
MsgBox "及格"
Case Else
'上述都不满足,不及格
MsgBox "不及格"
End Select
C. IS 比较运算符 表达式
使用 Is 关键字时,则可以配合比较运算符(除 Is 和 Like 之外)来指定一个数值范围。如果没有提供,则 Is 关键字会被自动插入。还是上面的例子,改成用IS配合比较运算符
Dim Chenji As Integer
Chenji = 80
Chenji = 80
Select Case Chenji
Case Is >= 90
'成绩大于等于90
MsgBox "优秀"
Case Is >= 80
'成绩大于等于80
'成绩大于等于80
MsgBox "优好"
Case Is >= 60
'成绩大于等于60
MsgBox "及格"
Case Else
'上述都不满足,不及格
MsgBox "不及格"
MsgBox "不及格"
End Select
上面三种形式,可以同时出现在一个CASE中,多个测试表达式列表之间用逗号分隔。
Dim Chenji As Integer
Chenji = 78
Select Case Chenji
Case 90, 91, 92, Is > 92
Case 90, 91, 92, Is > 92
MsgBox "优秀"
Case 80, 81 To 85, Is > 85
MsgBox "良好"
Case Is >= 60
MsgBox "及格"
Case Else
MsgBox "不及格"
End Select
同时可以针对字符串指定范围和多重表达式。
在下面的例子中,Case 所匹配的字符串为:等于 everything、按英文字母顺序落入从 nuts 到 soup 之间的字符串、以及 TestItem变量所代表的当前值。
在下面的例子中,Case 所匹配的字符串为:等于 everything、按英文字母顺序落入从 nuts 到 soup 之间的字符串、以及 TestItem变量所代表的当前值。
Case "everything","nuts" To "soup", TestItem
表达式列表的逻辑性要严密,否则会出现意想不到的效果。
语句:当测试表达式匹配表达式列表中某一条时,则执行该条case和下一个case 或End select 之间的语句。
例如在上面的例子中,当成绩为61分时,匹配 is >=60 表达式列表时,则执行case is >=60与case else之间的语句:msgbox “及格”。这里的语句可以不止一条,可以是多行,也可以多条写在一行(通过冒号分隔,但为了代码的可读性,建议写成多行)。
Case Else:可有可无。当 测试表达式 不匹配 Case 子句的任何部分时则执行CaseElse下面的语句(直到End select为止)。注意Case Else一般位于所有表达式列表的最后一条。
另外,Select Case 语句也可以是嵌套的。但每个嵌套的 Select Case 语句必须要有相应的 End Select 语句。
赞 (0)