VBA中的Select Case语句
- 格式:docx
- 大小:27.68 KB
- 文档页数:4
SelectCase语句教程为了避免难以弄清的复杂的嵌套的If语句,你可以使用Select Case语句代替。
它的语法为:Select Case 测试表达式Case 表达式1如果表达式1匹配测试表达式的语句Case 表达式2如果表达式2匹配测试表达式的语句Case 表达式N如果表达式N匹配测试表达式的语句Case Else如果没有表达式匹配测试表达式要执行的语句End Select你在关键字Select Case和End Select之间放置任意多个条件以测试。
子句Case Else是可选的,当你希望可能有条件表达式返回假时使用它。
在Select Case语句里,VB将每个表达式和测试表达式相比较。
这里是Select Case语句背后的逻辑。
当VB遇到Select Case子句,它记下测试表达式的值。
然后它前进到下面的第一个Case子句,如果这个表达式的值和测试表达式的值匹配的话,VB就会执行语句直到遇到另外一个Case子句并且跳到End Select语句。
然而,如果第一个Case子句后面的表达式测试结果和测试表达式不匹配时,VB就会检查每一个Case子句,直到它找到一个匹配的为止。
如果没有一个Case子句后面的表达式匹配测试表达式的值的话,VB就会跳到Case Else子句并执行该语句直到遇到关键字End Select。
注意,Case Else 子句是可选的,如果你的程序里面没有使用Case Else并且没有一个Case子句的表达式和测试表达式相匹配,VB就会跳到End Select后面的语句,并且继续执行你的程序。
我们来一个使用Select Case语句的程序例子。
在第四章里,你学习了MsgBox函数允许你显示带有一个或多个按钮的信息,你也学习了MsgBox函数的结果可以赋予一个变量。
使用Select Case语句,你现在可以基于用户按下的按钮决定采取哪个行动。
1. 在当前工程里插入一新模块2. 重命名新模块SelectCase.3. 输入下述过程TestButtons:Sub TestButtons()Dim question As StringDim bts As IntegerDim myTitle As StringDim myButton As Integerquestion = "Do you want to open a new workbook?"bts = vbYesNoCancel + vbQuestion + vbDefaultButton1myTitle = "New Workbook"myButton = MsgBox(prompt:=question, buttons:=bts, _ title:=myTitle)Select Case myButtonCase 6Workbooks.AddCase 7MsgBox "You can open a new book manually later."Case ElseMsgBox "You pressed Cancel."End SelectEnd Sub过程TestButtons的第一部分显示一个带有三个按钮的信息框:是,否和取消。
从上⾯的例予可以看出,如果条件复杂,分⽀太多,使⽤If语句就会显得累赘,⽽且程序也将变得不易阅读。
这时可使⽤Select Case语句来写出结构清晰的程序。
Select case语句可根据表达式的求值结果,选择执⾏⼏个分⽀中的⼀个分⽀。
其语法如下:
Select Case
[(;ase]
[]]
[case Else
[]]
End Select
(1)检验表达式必要参数,可为任何数值表达式或字符串表达式。
(2)⽐较列表1 若有case出现,则为必要参数。
它是多个“⽐较元素”的列表,其中可包含“表达式”、“表达式To表达式”、“Is 表达式’’⼏种形式。
如果“⽐较元素”中含有“To”关键字,则前⼀个表达式必须⼩于后⼀个表达式(对于数值表达式,指的是数值⼤⼩;对于字符串表达式,则指排序),且必须介于两个表达式之间。
如果含有“Is”关键字,则“⽐较操作符’’表达式的值必须为真。
(3)语句1~n可包含⼀条或多条语句。
如果有⼀个以上的Case⼦句与“检验表达式”匹配,则VBA只执⾏第⼀个匹配的Case后⾯的“语句”。
如果前⾯的case⼦句与都不匹配,则执⾏Case Else⼦句中的语句n。
vba条件判断语句select语句VBA中的条件判断语句主要包括If语句和Select Case语句。
1. If语句:If语句用于根据条件的结果来执行不同的代码块。
其基本结构为:```vbaIf condition Then'如果条件为True时执行的代码块ElseIf condition1 Then'如果条件1为True时执行的代码块ElseIf condition2 Then'如果条件2为True时执行的代码块Else'如果条件都不满足时执行的代码块End If```其中,condition、condition1、condition2等是要判断的条件表达式,可以是逻辑表达式、比较表达式等。
注意,Else和后面的条件是可选的,可以根据实际需要来选择是否使用。
2. Select Case语句:Select Case语句是根据一个或多个表达式的结果来选择执行哪个代码块。
其基本结构为:```vbaSelect Case expressionCase value1'如果expression等于value1时执行的代码块Case value2'如果expression等于value2时执行的代码块Case Else'如果expression不等于前面的value时执行的代码块End Select```其中,expression是要判断的表达式,value1、value2等是要比较的值。
Case语句可以有多个,可以根据需要添加不同的取值情况。
Case Else是可选的,用于当expression不满足前面的条件时执行的代码块。
这些条件判断语句在VBA中可以灵活应用,根据不同的条件来执行不同的操作,增强了程序的功能和逻辑性。
此外,VBA还提供了其他一些条件判断的函数和运算符,如:- And运算符:用于判断多个条件是否同时满足;- Or运算符:用于判断多个条件是否其中之一满足;- Not运算符:逻辑非运算符,用于反转条件的结果;- Iif函数:用于根据条件的结果返回不同的值;- IsNull函数:判断一个表达式是否为Null。
vba编程判断语句VBA编程是一种用于操作Excel等Microsoft Office应用程序的编程语言。
在VBA中,判断语句是一种常用的语句类型,用于根据条件的真假执行不同的代码块。
下面列举了10个常用的VBA判断语句及其用法。
1. If语句:用于根据条件的真假执行不同的代码块。
```If condition Then' 执行代码块1Else' 执行代码块2End If```2. ElseIf语句:用于在多个条件之间进行判断。
```If condition1 Then' 执行代码块1ElseIf condition2 Then' 执行代码块2Else' 执行代码块3End If```3. Select Case语句:用于根据不同的条件执行不同的代码块。
```Select Case expressionCase value1' 执行代码块1Case value2' 执行代码块2Case Else' 执行代码块3End Select```4. For循环语句:用于重复执行一段代码,次数由循环条件决定。
```For index = start T o end Step step' 执行代码块Next index```5. Do While循环语句:用于在满足条件的情况下重复执行一段代码。
```Do While condition' 执行代码块Loop```6. Do Until循环语句:用于在不满足条件的情况下重复执行一段代码。
```Do Until condition' 执行代码块Loop```7. While循环语句:用于在满足条件的情况下重复执行一段代码。
```While condition' 执行代码块Wend```8. Until循环语句:用于在不满足条件的情况下重复执行一段代码。
```Until condition' 执行代码块Loop```9. Exit语句:用于提前结束循环或过程。
本文介绍VB中一种选择结构——Slect Case语句。
Select Case语句也称为情况语句,是多分支结构的另一种表示形式。
语句格式如下:Select Case语句的功能是首先计算<测试表达式>的值,然后用计算结果从前到后依次与每个Case子句的<表达式列表>的值进行比较。
如果匹配成功,则执行该Case子句后的语句块,然后执行End Select语句。
如果没有匹配的,且存在Case Else语句则执行Case Else子句后的语句块n+1,然后执行End Select语句。
<表达式列表>有4种形式:1,表达式如:Case 5 或 Case "a"2,表达式1 To 表达式2Case 1 to Case 20或Case "A" to "Z"3,Is关系运算符表达式如:Case Is<604,用逗号分隔的以上3种形式的列表如:Case 1 to3,10 to 15 ,6,9,Is>100说明:To用来指定一个范围,必须将小的值写在前面,而大的值写的后面Is及后面的关系运算符和表达式来指定一个数值范围。
如Is>50 ,但是不能用两个或多个组合在一起,例如Case Is>10 And Is<20,这是错误的表达形式Select Case语句与If语句功能类型,一般情况下可以相互替换。
举例:要求:编程求指定某年某月的天数。
如下图所示;分析:月份天数有3种情况,即31天、30天、29天或28天。
第3种情况与是否为闰年有关,闰年的2月为29天,非闰年的2月为28天。
闰年是能被4整除但不能被100整除的年(如2004年),或者能被400整除的年(如2000年)。
步骤一:按照上图设计程序界面。
步骤二:添加代码,如下所示步骤三:测试效果,输入年份和月份后,单击求天数按钮即可计算出该月的天数。
11.VBA基本语句(selectcase)
周六 · 探索 关键词:VBA概念
⼩伙伴们,上⼀篇我们提到了判断多条件,⽤IF来进⾏,今天啊,我们要学习的,同样是⽤来判断的语句——select case ,选择情况。
1select case
这个中⽂解释有点挫,我把它翻译成,万⼀发⽣了什么情况,就选择什么结果。
Select case 语句,最后的结束语句是 end select
2解析
Select case 后⾯跟着的语句是⽤来给程序判断和⽐较的值。
Case is 后⾯跟着的是参数,⽤于⽐较的参数值。
End select 是结束语句。
3应⽤
究竟什么时候⽤if 什么时候⽤case 呢?
阿狸个⼈习惯是,如果是多条件⼀起判断,会选择IF,例如,既是美⼥⼜是⾼材⽣且还是温柔的⼈。
如果是单⼀条件进⾏⽐较,但情况⽐较多,会选择case。
例如:他如果是男的,就是先⽣,如果是⼥的就是⼩姐,否则就是性别不明。
vba中多条件判断在VBA中,我们经常需要根据不同的条件来进行判断和处理。
如果只有一个条件,我们可以使用If语句来实现。
但是,当我们需要同时判断多个条件时,就需要用到多条件判断了。
一、使用And和Or运算符在VBA中,我们可以使用And和Or运算符来实现多条件判断。
And 表示“且”的意思,只有同时满足所有的条件才会执行相应的代码;Or表示“或”的意思,只要满足其中任何一个条件就会执行相应的代码。
下面是一个使用And运算符的例子:```If age > 18 And sex = "男" Then'执行相应的代码End If```上面的代码中,只有当年龄大于18岁并且性别为男时才会执行相应的代码。
下面是一个使用Or运算符的例子:```If score >= 60 Or isPass = True Then'执行相应的代码End If```上面的代码中,只要成绩大于等于60分或者已经通过考试了就会执行相应的代码。
二、使用Select Case语句除了使用And和Or运算符外,我们还可以使用Select Case语句来实现多条件判断。
Select Case语句可以根据表达式(通常是变量)的值来选择不同的分支,并执行相应的代码。
下面是一个使用Select Case语句实现多条件判断的例子:```Select Case scoreCase Is >= 90'执行相应的代码Case Is >= 80 And score < 90'执行相应的代码Case Is >= 70 And score < 80'执行相应的代码Case Else'执行相应的代码(包括分数小于70分的情况)End Select```上面的代码中,根据成绩的不同范围执行不同的代码。
如果成绩大于等于90分,则执行第一个分支中的代码;如果成绩在80到89之间,则执行第二个分支中的代码;以此类推。
vbselectcase优化摘要:1.VB Select Case 语句概述2.VB Select Case 语句的优化方法3.优化VB Select Case 语句的实际案例与效果正文:VB Select Case 语句优化VB(Visual Basic)是一种常用的编程语言,Select Case 语句是VB 中用于实现多分支选择的关键语句。
它可以根据不同的条件执行不同的代码块。
然而,在某些情况下,Select Case 语句可能会导致性能下降。
本文将介绍如何优化VB Select Case 语句,提高程序性能。
VB Select Case 语句的优化方法1.使用数组代替多层嵌套的Select Case在某些情况下,Select Case 语句可能会出现多层嵌套。
这种情况下,可以使用数组来简化代码,提高性能。
将多个条件放入数组中,然后使用数组元素进行判断。
```vbDim conditions() As String = {"A", "B", "C"}Dim result As StringSelect Case TrueCase conditions(0) = "A"result = "A"Case conditions(1) = "B"result = "B"Case conditions(2) = "C"result = "C"End Select```2.使用字典进行条件判断如果条件是字符串类型,可以使用字典进行条件判断。
将条件作为字典的键,对应的值作为结果。
这样可以在O(1)的时间复杂度内进行条件判断。
```vbDim conditions As New Dictionary(Of String, String)conditions.Add("A", "A")conditions.Add("B", "B")conditions.Add("C", "C")Dim result As StringSelect Case TrueCase conditions.TryGetValue("A", result)" Do something with resultCase conditions.TryGetValue("B", result)" Do something with resultCase conditions.TryGetValue("C", result)" Do something with resultEnd Select```3.使用Lookup 函数进行条件判断在 中,可以使用Lookup 函数进行条件判断。
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
Application.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 '如果小于12
MsgBox "上午"
Case 12
'如果等于12
MsgBox "正午"
Case Else
'其他情况,表示13到18之间
MsgBox "下午"
End Select
'结束层条件语句
Case Else
'其他情况,外层
MsgBox "晚上"
'表示1到8之间或19到24之间
End Select。