【烟花原创】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 "优秀"
           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
    Select Case Chenji
        Case Is >= 90
              '成绩大于等于90
              MsgBox "优秀"
            Case Is >= 80
              '成绩大于等于80
                MsgBox "优好"
            Case Is >= 60
              '成绩大于等于60
                MsgBox "及格"
            Case Else
              '上述都不满足,不及格
                MsgBox "不及格"
    End Select
    上面三种形式,可以同时出现在一个CASE中,多个测试表达式列表之间用逗号分隔。
    Dim Chenji As Integer
    Chenji = 78
    Select Case Chenji
        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" 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)

相关推荐

  • Excel 宏 基本语法

    Excel 宏 基本语法

  • 【烟花原创】VBA零基础之第30篇 对象(五)

    一篇我们讲了如何引用对象,主要是通过从对象集合中进行引用,今天我们讲讲如何使用对象变量来引用对象. 什么是对象变量呢? 前面已经有过讲变量了,通俗的说,就是变量的类型是对象类型,象单元格,工作表,工作 ...

  • 【烟花原创】VBA零基础之第28篇 对象(三)

    上一篇讲到了对象,在VBA中,还有一个非常重要的概念:集合Collections 集合是一个包含一组类型相同的对象集.另外,其实集合自身也是一个对象. 下面列出一有些经常使用到的集合对象: 工作簿集合 ...

  • 【烟花原创】VBA零基础之第12篇 常量

    上一篇讲了变量,这一讲咱们聊聊常量(也有MS管叫常数). 一.什么是常量     常量就是程序在运行时保持一个固定的值的命名项目.     常量可以是字符串,数值,另一常量,或者任何(除Is之外) 算 ...

  • 【烟花原创】VBA零基础之第29篇 对象(四)

    引用对象是非常重要的,因为在代码里访问对象时必须指明需要操作的对象. 例如在日常中我们找某人的,肯定会喊某人的名字(不认识的可以喊美女帅哥),人家才会理你. 可在VBA代码中,你必须实打实的指明某个特 ...

  • 【烟花原创】VBA零基础之第27篇 对象(二)

    上一篇我们讲到Excel自身就是一个对象,应用程序(Application)是这个对象层次中的最顶层,下面列出了在Application对象中一些经常使用到的对象: 引用Addin 窗口Window ...

  • 【烟花原创】VBA零基础之第26篇 对象(一)

    对象,这词大家再熟悉不过了,此对象非彼对象. 对象代表应用程序中的元素. 例如在Excel中,我们用到的单元格,工作表,工作簿,图表,数据透视表等等都是对象. 引用JAVA<编程思想>里面 ...

  • 【烟花原创】VBA零基础之第19篇 Goto语句

    通过Goto语句,可以无条件地转移到过程中的指定的行,从而实现不同程序段间作流程控制. 语法: GoTo Line Line:必要参数,line可以是过程内任意的行号或行标签. 什么是行号? 用来识别 ...

  • 【烟花原创】VBA零基础之第18篇 Do…Loop循环 (二)

    上一篇讲的是当使用 While 关键字去检查 Do...Loop 语句中的条件时,有两种方法. 可以在进入循环之前检查条件,也可以在循环至少运行一次之后才检查条件. 今天要讲的是在Do-Loop循环中 ...

  • 【烟花原创】VBA零基础之第17篇 Do…Loop循环 (一)

    上一篇聊过了以指定次数执行语句的For Next循环,但是当我们不知道循环具体会运行多少次,但能通过某种条件的变化来实现控制循环的开始和结束,这便是今天咱们要聊聊的的Do-Loop循环. 一.当条件为 ...