VBA中的Select Case语句

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Select Case语句也是条件语句之一,而且是功能最强大的条件语句。它主要用于多条件判断,而且其条件设置灵活、方便,在工作中使用频率极高。本节介绍Select Case语句的语法及应用案例.

Select Case语句的语法如下:

Select Case testexpression

[Case expressionlist-n

[statements-n]] ...

[Case Else

[elsestatements]]

End Select

Select Case语句包括四部分,每部分详细含义如表38-1所示。

在以上语法列表中,省略号代表可以使用多个条件。只要有一个Case就需要有一个statements-n,表示条件及符合条件时的执行条件。

其中elsestatements表示不符合指定条件时的执行语句,是可选参数。可以忽略elsestatements,也可以执行一条或者一组语句,为了让程序能够处理一些不可预见的情况,尽量使用elsestatements语句处理不符合条件时该如何回应。

在Select Case的多个参数中,最复杂的是expressionlist-n部分,它有多种表达形式,包括:lExpression——直接声明一个条件值,例如5

lexpression To expression——声明一个条件的范围,例如5-10

lIs comparisonoperator——声明一种比较方式,例如is >5

下面的实例可以展示参数中expressionlist-n部分的多种表达形式。

实例1:多条件时间判断

根据当前的时间判断是上午、中午,还是下午、晚上、午夜。

要求中条件比较多,使IF…Then…需要多层嵌套,而Select Case语句会更简单。代码如下:___________________________________________________

Sub 时间()

Dim Tim As Byte, msg As String

Tim = Hour(Now)

Select Case Tim

Case 1 To 11

msg = "上午"

Case 12

msg = "中午"

Case 13 To 16

msg = "下午"

Case 17 To 20

msg = "晚上"

Case 23, 24

msg = "午夜"

End Select

MsgBox "现在是:" & msg

End Sub

__________________________________________

以上代码中,“Case 1 To11”表示当前时间在1点到11点,用于限定一个范围;“Case 12”是表示当前时间为12点时返回True,可用于限制一个具体的值,或者多个值。如果需要罗列多个具体的值,那么需要在每个值之间使用逗号分隔,例如“Case 23,24”。

本例中不存在例外的情况,所以忽略“Case Else”语句。

实例2:根据成绩返回评语

如果成绩小于60则返回“不及格”,60到80之间则返回“良”,80到99则返回“优”,100分则返回“满分”,如果成绩大于100则是输入了错误值。利用一个Function过程来处理,其代码如下:

________________________________________

Function 成绩(rng As Range)

Select Case rng

Case Is < 0, Is > 100

成绩 = "输入错误"

Case Is < 60

成绩 = "不及格"

Case 60

成绩 = "及格"

Case 60 To 80

成绩 = "良"

Case 81 To 99

成绩 = "优"

Case Else

成绩 = "满分"

End Select

End Function

_____________________________________

以上代码中,Is关键词用于指定一种比较方式,后接Is和Like以外的比较运算符。本例中需要限制小于0和大于100两个条件,那么Is关键词可以同行中使用两次,中间用逗号分隔,表示罗列两个条件。

“Case Is <60”语句在第一个条件“Case Is < 0, Is > 100”基础上再进行比较,那么成绩“-10”将不符合“<60”这个条件,因为 Select Case在处理多条件时,总是按从上到下的顺序处理。如果改变本例的条件顺序,可能产生不同的运算结果。

“Case Else”语句表示如果不符合前面的所有条件,则执行它后面的语句,本例中表示成绩为100时返回“满分”。

在工作表中使用该自定义函数后,结果如图38.1所示。

图38.1利用Function返回成绩评语

实例3:以指定格式显示星期

现要求在状态栏显示今日星期,以三种方式供用户选择。具体代码如下:

Sub 在状态栏显示今日是星期几()

Dim str As String

star:

Select Case InputBox("请指定日期显示方式: " & Chr(10) & "1:周一样式" & Chr(10) _

& "2:星期一样式" & Chr(10) & "3:英文", "日期显示方式", 1)

Case 1

str = "AAA"

Case 2

str = "AAAA"

Case 3

str = "DDDD"

Case Else

MsgBox "录入错误,请重新录入"

GoTo star

End Select

相关文档
最新文档