case子句是一种条件判断语句,它的作用是根据不同的情况执行不同的代码。它主要用于多分支选择,即根据不同的情况执行不同的代码。
switch (expression) { case value1: // code to be executed if expression = value1; break; case value2: // code to be executed if expression = value2; break; ... default: // optional // code to be executed if expression doesn't match any of the values above; }
上面是一个 switch 语句的基本结构,其中 expression 是一个表达式,value1、value2 等是 case 后面跟随的值(也可以是表达式);default 是可选项,当 expression 不匹配任何 case 后面的值时执行。
有时候,作决定是基于测试表达式的条件,例如它是否大于,小于,等于或使用一些其它的关系运算符(参见表5-1)。关键字Is使你能够在Case子句里使用条件表达式。使用关键字Is的SelectCase语句的语法如下:
表5-1 VBA中的关系运算符
Select Case 测试表达式
Case Is 条件1
如果条件1为真时执行的语句
Case Is 条件2
如果条件2为真时执行的语句
Case Is 条件N
如果条件N为真时执行的语句
End Select
例如,我们来比较几个数字:
Select Case myNumber
Case Is <10
MsgBox "The number is less than 10"
Case 11
MsgBox "You entered eleven."
Case Is >=100
MsgBox "The number is greater than or equal to 100."
Case Else
MsgBox "The number is between 12 and 99."
End Select
假设变量myNumber为120,那么第三个Case子句为真,并且只有Case Is >=100和Case Else之间的语句会被执行。
Select Case unitsSold
Case 1 to 100
Discount = 0.05
Case Is <= 500
Discount = 0.1
Case 501 to 1000
Discount = 0.15
Case Is >1000
Discount = 0.2
End Select
我们来分析一下上面的Select Case代码块,假设变量unitsSold当前值为99。VB将变量unitsSold的值与Case子句的条件表达式进行比较。第一和第三条Case子句示范如何通过使用关键字To在条件表达式里使用数值范围。因为unitsSold=99,第一个Case子句里的条件表达式为真,因此,VB将0.05赋给变量Discount。第二个Case子句如何呢?它也为真。尽管,很明显99小于等于500,VB不会执行相关的语句Discount=0.1。原因是,一旦VB找到了一个真条件的Case子句,它就不会去管其它的Case子句,它将跳过那些代码,继续执行End Select语句后面可能有的语句。Sub DisplayDiscount()
Dim unitsSold As Integer
Dim myDiscount As Single
unitsSold = InputBox("Enter the number of sold units:")
myDiscount = GetDiscount(unitsSold)
MsgBox myDiscount
End Sub
Function GetDiscount(unitsSold As Integer)
Select Case unitsSold
Case 1 To 200
GetDiscount = 0.05
Case Is <=500
GetDiscount = 0.1
Case 501 To 1000
GetDiscount = 0.15
Case Is >1000
GetDiscount = 0.2
End Select
End Function
3. 将光标放在过程DisplayDiscount的任意地方并且按下F5来运行它。过程DisplayDiscount将储存于变量unitsSold的值传递给函数GetDiscount。当VB遇到SelectCase语句时,它检查第一个Case子句里的值是否合储存于unitsSold里面的值是否匹配。如果匹配,VB给函数名称赋值百分之五(0.05),并且跳到关键字EndSelect。因为,在函数过程里面没有更多需要运行的语句,VB就返回主调过程——DisplayDiscount,在这里,它将函数的结果赋予变量myDiscount。最后的语句用信息框来显示获得的折扣。Select Case myMonth
Case "January", "February", "March"
Debug.Print myMonth & ": 1st Qtr."
Case "April", "May", "June"
Debug.Print myMonth & ": 2nd Qtr."
Case "July", "August", "September"
Debug.Print myMonth & ": 3rd Qtr."
Case "October", "November", "December"
Debug.Print myMonth & ": 4th Qtr."
End Select
技巧:Case子句的多个条件现在要执行一些例如填充数组或显示数组成员的任务了,你在第六章里学过的好些个循环语句(参见For…Next和For Each …Next循环)...
你已经从前面的章节里知道了不能删除含有文件的文件夹,要从文件夹里面删除文件的话,可以使用下面的Kill语句:Kill 文件路径名文...
日期和时间Dates 模块提供了两种关于时间的数据类型: Date 和 DateTime, 精度分别为天和毫秒, 都是抽象数据类型 TimeType 的子类...
开发扩展包Julia 中设有包管理器,当你安装了扩展包时,你可以看到它的源代码和完整的开发历史。你也可以修改扩展包,并使用 git...
Chart 帮助器 - 众多有用的 ASP.NET Web 帮助器之一。通过使用 Chart 帮助器可以在图表中显示数据,本节讲解了Chart 帮助器的具...
本节讲解了WebMail 对象的属性、方法以及如何初始化 WebMail 帮助器。通过 WebMail 对象,您可以很容易地从网页上发送电子邮件。...
在ASP.NET 中 Razor 支持 VB (Visual Basic),本节介绍了如何方便的重复执行相同的语句。语句在循环中会被重复执行。 For 循环 ...
本节讲解ASP.NETMVC数据库的创建与数据库数据的添加。为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序。第 6 部分:添...