说说VBA中的Select Case语句 您所在的位置:网站首页 vb中cell 说说VBA中的Select Case语句

说说VBA中的Select Case语句

2023-10-31 19:26| 来源: 网络整理| 查看: 265

Select Case语句也是条件语句之一,而且是功能最强大的条件语句。它主要用于多条件判断,而且其条件设置灵活、方便,在工作中使用频率极高。本节介绍Select Case语句的语法及应用案例.Select Case语句的语法如下:Select Case testexpression[Case expressionlist-n[statements-n]] ...[Case Else[elsestatements]]End SelectSelect Case语句包括四部分,每部分详细含义如表38-1所示。表38-1 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子句的任何部分时执行 在以上语法列表中,省略号代表可以使用多个条件。只要有一个Case就需要有一个statements-n,表示条件及符合条件时的执行条件。其中elsestatements表示不符合指定条件时的执行语句,是可选参数。可以忽略elsestatements,也可以执行一条或者一组语句,为了让程序能够处理一些不可预见的情况,尽量使用elsestatements语句处理不符合条件时该如何回应。在Select Case的多个参数中,最复杂的是expressionlist-n部分,它有多种表达形式,包括:lExpression——直接声明一个条件值,例如5lexpression To expression——声明一个条件的范围,例如5-10lIs comparisonoperator——声明一种比较方式,例如is >5下面的实例可以展示参数中expressionlist-n部分的多种表达形式。实例1:多条件时间判断根据当前的时间判断是上午、中午,还是下午、晚上、午夜。要求中条件比较多,使IF…Then…需要多层嵌套,而Select Case语句会更简单。代码如下:___________________________________________________Sub 时间()Dim Tim As Byte, msg As StringTim = Hour(Now)Select Case TimCase 1 To 11msg = "上午"Case 12msg = "中午"Case 13 To 16msg = "下午"Case 17 To 20msg = "晚上"Case 23, 24msg = "午夜"End SelectMsgBox "现在是:" & msgEnd Sub__________________________________________

以上代码中,“Case 1 To 11”表示当前时间在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 rngCase Is < 0, Is > 100成绩 = "输入错误"Case Is < 60成绩 = "不及格"Case 60成绩 = "及格"Case 60 To 80成绩 = "良"Case 81 To 99成绩 = "优"Case Else成绩 = "满分"End SelectEnd Function_____________________________________

以上代码中,Is关键词用于指定一种比较方式,后接Is和Like以外的比较运算符。本例中需要限制小于0和大于100两个条件,那么Is关键词可以同行中使用两次,中间用逗号分隔,表示罗列两个条件。“Case Is  100”基础上再进行比较,那么成绩“-10”将不符合“图38.1 利用Function返回成绩评语实例3:以指定格式显示星期现要求在状态栏显示今日星期,以三种方式供用户选择。具体代码如下:Sub 在状态栏显示今日是星期几()Dim str As Stringstar:Select Case InputBox("请指定日期显示方式: " & Chr(10) & "1:周一样式" & Chr(10) _& "2:星期一样式" & Chr(10) & "3:英文", "日期显示方式", 1)Case 1str = "AAA"Case 2str = "AAAA"Case 3str = "DDDD"Case ElseMsgBox "录入错误,请重新录入"GoTo starEnd SelectApplication.StatusBar = Format(Date, str)End Sub________________________________________

本例是“Select Case”对象不确定的实例,它在执行后由用户手动指定对象。在Select Case语句中,利用Case限制了三个条件,分别为手动录入1、2和3时的日期显示格式。但用户可能会误输入1到3范围以外的数值,使程序产生错误,那么利用Case Else语句来限制,且返回到InputBox语句处让用户重新录入,直到数值处于要求的范围内为止,这是最理想的处理方式。实例4:Select Case嵌套应用计算时间和IF…Then…一样,Select Case也可以多层嵌套。本例根据现在的时间判断是白天还是晚上,如果是白天,再进行细分“上午”、“正午”和“下午”。详细代码如下:________________________________________Sub 时间2()tim = Hour(Now) '获取现在的时间Select Case tim '条件语句开始,第一层Case 8 To 18'如果是白天Select Case tim '嵌套使用,第二层Case Is < 12 '如果小于12MsgBox "上午"Case 12'如果等于12MsgBox "正午"Case Else'其他情况,表示13到18之间MsgBox "下午"End Select'结束层条件语句Case Else'其他情况,外层MsgBox "晚上"'表示1到8之间或19到24之间End SelectEnd Sub_____________________________________

在Select Case语句第一个条件中嵌套了一个Select Case条件语句。根据需要,还可以嵌套多层条件语句。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有