2024年4月19日发(作者:)

Excel VBA编程 Select Case语句

该语句的结构为选择程序结构,它根据表达式的值,来判断执行几组语句中的其中哪一个语

句。虽然前面介绍的IF…Then…Else结构比较简单,但是当添加太多的Else if子句时,会使

代码变得繁琐。

Select Case是IF…Then…Else结构的一种变通形式,可使代码变得简练易读。但是,并不是

所有的多分支结构均可用Select Case语句代替If语句。

语法:

Select Case testexpression

[Case expressionlist-n

[statements-n]] ...

[Case Else

[elsestatements]]

End Select

Select Case语句的语法具有以下几个部分:

testexpression 必要参数。任何数值表达式或字符串表达式。

expressionlist-n 如果有Case出现,则为必要参数。其形式为expression,expression To expression,

Is comparisonoperator expression的一个或多个组成的分界列表。To关键字可用来指定一个数值

范围。如果使用To关键字,则较小的数值要出现在To之前。使用Is关键字时,则可以配合比

较运算符(除Is和Like之外)来指定一个数值范围。如果没有提供,则Is关键字会被自动插入。

statements-n 可选参数。一条或多条语句,当testexpression匹配expressionlist-n中的任何部分

时执行。

elsestatements 可选参数。一条或多条语句,当testexpression不匹配Case子句的任何部分时执

行。

下面的示例使用Select Case语句来判断变量的值。

Dim Number

Number = 8 ' 设置变量初值。

Select Case Number ' 判断 Number 的值。

Case 1 To 5 ' Number 的值在 1 到 5 之间,包含1 和 5 。

"Between 1 and 5"

Case 6, 7, 8 ' Number 的值在 6 到 8 之间。

"Between 6 and 8"

Case 9 到 10 ' Number 的值为 9 或 10。

"Greater than 8"

Case Else ' 其他数值。

"Not between 1 and 10"

End Select

其中,在Select Case语句的使用过程中,应注意以下几点内容:

 如果testexpression与任何Case expressionlis 表达式匹配,则执行此Case子句和下一个Case子

句之间的语句,对于最后的子句,则会执行该子句到End Select之间的语句,然后控制权会转到

End Select之后的语句。如testexpression与多个Case子句中的expressionlist表达式匹配,则只

有第一个匹配后的语句被执行。

 Case Else 用于指示若在testexpression和任何其他Case选项的expressionlist之间未找到匹配,

则执行elsestatements。虽然不是必要的,但最好是将Case Else语句置于Select Case块中以处理

不可预见的testexpression值。如果没有Case expressionlist与testexpression匹配且无Case Else

语句,则继续执行End Select之后的语句。

 Select Case语句可以是嵌套的,每一层嵌套的Select Case语句必须有与之匹配的End Select语句。