VBA中的Select Case语句

合集下载

SelectCase语句教程

SelectCase语句教程

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的第一部分显示一个带有三个按钮的信息框:是,否和取消。

理解VB中选择语句SelectCase结构的最好例子

理解VB中选择语句SelectCase结构的最好例子
End Sub
'以下代码是程序退出
Private Sub Command3_Click() End
End Sub
Case Else
'测试表达式的值x在其它情况下
Text2.Text = "不及格" '文本框Text2中显示“不及格”
End Select End Sub
'以下代码是清除文本框Text1、Text2中所显示的内容,且将焦点放在文本框Text1上
Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Te78、79情况下
Text2.Text = "中等" '文本框Text2中显示“中等”
Case 60, 61, 62, 63 To 66, Is >= 67 '测试表达式的值x为60、61、62、63、在64至66情况
下、大于等于67的情况下
Text2.Text = "及格" '文本框Text2中显示“及格”
Case Is >= 90
'测试表达式的值x大于等于90情况下
Text2.Text = "优秀" '文本框Text2中显示“优秀”
Case 80 To 90
'测试表达式的值x在80至90情况下
Text2.Text = "良好" '文本框Text2中显示“良好”
Case 70, 71, 72, 73, 74, 75, 76, 77, 78, 79 '测试表达式的值x为70、71、72、73、74、75、

VBA编程中的SelectCase语句

VBA编程中的SelectCase语句

从上⾯的例予可以看出,如果条件复杂,分⽀太多,使⽤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条件判断语句select语句

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编程 判断语句

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编程之Select Case语句

VB编程之Select Case语句

本文介绍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)

11.VBA基本语句(selectcase)

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中多条件判断

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之间,则执行第二个分支中的代码;以此类推。

  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
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。

相关文档
最新文档