Excel VBA Select Case结构
发布时间:2023-11-29 13:45:55
人生经常要面临“多选一”的情况,在编写程序代码时也是如此。在上篇文章中,我们讲解了使用If-Then结构来进行判断,也举了很多个小例子。我们看到,随着条件的增多,代码的结构也变得复杂或难以理解。幸运的是,VBA为我们提供了Select Case结构,让我们根据多个条件判断选择时,能够写出容易理解的代码。
上篇文章的结尾举了一个例子:按照一定的规则,根据员工的工龄来确定员工的年休假天数:
工龄(年) | 年休假天数 |
10年及以下 | 5 |
10~20 | 10 |
20~25 | 15 |
25年以上 | 20 |
现在,我们使用Select Case结构来编写代码,实现相同的功能。首先看看示例代码:
示例代码1
Sub NianXiuTianWithSelectCase()
‘声明变量,用来表示年休天数和工龄
Dim lngDays As Long
Dim lngYears As Long
lngYears = Range(“A1”).Value
‘根据工龄确定相应的年休天数
Select Case lngYears
Case 0 To 10
lngDays = 5
Case 10 To 20
lngDays = 10
Case 20 To 25
lngDays = 15
Case Is > 25
lngDays = 20
End Select
MsgBox “工龄:” &lngYears & vbCrLf & “年休天数:” &lngDays
End Sub
同样,您可以在工作表单元格A1中输入代表工龄的数字,运行代码后,会显示相应的年休天数,就像在上篇文章中所示的图一样。
与上篇文章中的代码相比,既简单又易理解。
Select Case结构的语法如下:
Select Case 条件(表达式)
[Case 表达式值1
[语句块] ]
[Case 表达式值2
[语句块] ]
……
[Case Else
[语句块] ]
End Select
说明:
当某个Case“表达式值”满足“条件(表达式)”的结果时,执行相应的语句块,并退出Select Case结构。如果没有满足“条件(表达式)”的结果时,就执行Case Else后的语句块。
方括号表示可选。Case子句可以有多个,CaseElse子句可以有也可以没有。
Case后的表达式可以是数值范围,如示例代码1所示。下面再举一些简单的例子来说明Select Case结构的用法,这些例子本身没有多大的实用价值,只是方便您理解Select Case结构。
Case后的表达式也可以是逗号分隔的数值或字符串,如下面的示例代码所示:
示例代码2:逗号分隔数值
SubNumWithSelectCase()
Select Case Range(“A1”).Value
Case 1, 3, 5
MsgBox “单元格A1中的值是5以内的奇数.”
End Select
End Sub
如果单元格A1中是数值1或3或5,运行代码后就会弹出“单元格A1中的值是5以内的奇数.”的消息框。
示例代码3:逗号分隔字符
Sub CharWithSelectCase()
Select Case Range(“A1”).Value
Case “A”, “E”,”I”, “O”, “U”
MsgBox “单元格A1中是大写元音字母.”
Case Else
MsgBox “单元格A1中不是大写元音字母.”
End Select
End Sub
如果单元格A1中是字母“A”、“E”、“I”、“O”、“U”之一,运行代码后就会弹出“单元格A1中是大写元音字母”的消息框。
我们还可以嵌套使用Select Case结构,如下面的示例代码所示:
示例代码4:嵌套的Select Case结构
Sub qtWithSelectCase()
Select Case Range(“A1”).Value
Case “工作表”
Select Case Worksheets.Count
Case 1
MsgBox “工作簿中有1个工作表”
Case 2
MsgBox “工作簿中有2个工作表”
Case Else
MsgBox “工作簿中的工作表超过了2个”
End Select
Case Else
MsgBox “请在单元格A1中输入文本:工作表”
End Select
End Sub
如果单元格A1中的值为文本“工作表”,就判断工作簿中的工作表数量(语句Worksheets.Count),并在消息框中显示相应的信息。
说明:
Select Case结构可以多层嵌套,但要注意每个Select Case语句要对应一条End Select语句。
在书写嵌套结果时,在代码中使用缩进排列可以使程序清晰易懂。
如果Case子句后只有一条指令,那么可以将指令与Case书写在一行上。例如,我们重写示例代码2如下:
Sub NumWithSelectCase()
Select Case Range(“A1”).Value
Case 1, 3, 5: MsgBox “单元格中的数字是5以内的奇数.”
End Select
End Sub
说明:
如果将Case子句与后面的指令写在一行上,那么必须在它们之间加上冒号(:)。


猜你喜欢
- 使用电脑需要将屏幕亮度调到合适我们眼睛使用的亮度,Windows7怎么调整屏幕亮度?系统之家小编来教你!Windows7怎么调整屏幕亮度?1
- 为了方便编辑和查看,我们可以将文档上传到wps的云空间中,具体的操作是怎样的呢?下面就让小编告诉大家如何将文档上传到wps云空间。将文档上传
- 对于从事人力资源工作的用户来说,可能就经常需要使用wps表格统计员工信息,而在统计过程中最常出现的问题莫过于统计重复了,如果是在重复非常多的
- 我们可以看到不同的Excel加密的方法,今天我们来学习一个另类的Excel表格加密方式,如何在表格中,输入特定的密码,然后让表格里面的数据立
- 电脑c盘如果长时间不清理,就会堆积很多垃圾缓存文件,拖慢电脑系统的运行速度。有网友想清理c盘空间,但不知道电脑怎么清理C盘而不影响使用。下面
- 在Excel的默认图表中,还有一种分段折线图,在表示连续两段不同的数据时,就需要用到分段折线图了。以下是小编为您带来的关于Excel分段折线
- 很多小伙伴都会使用电脑玩游戏,但是在玩游戏的时候都碰到了按键不小心按错了导致输入法跳出来影响了游戏操作的情况。碰到这种情况真的很影响游戏体验
- 大家都知道电脑时间长了,运行速度就会下降,电脑就开始变卡,那我们可以检查电脑中哪些占用较大CPU的进程,关闭即可。那Win11中怎么检查有哪
- 电脑老是卡顿死机,想要重装但是又担心电脑文件丢失,还要花费很多的时间,不妨试试一键重装系统,重装速度快,只要提前做好文件备份那文件是不会丢失
- 这篇文章给大家介绍Win10使用OneNote将图片文字转换为电子文字详细步骤,非常不错,具有一定的参考借鉴价值,需要的彭跟随小编一起看看吧
- 小伙伴们在使用电脑的时候都会对电脑的安全隐患很是上心,这时候就需要给电脑上 * 密码,那么该怎么设置密码呢?下面就来看看详细的教程吧。win7
- 在日常办公中,经常遇到需要计算两个日期之间的工作日有多少天,笨一点的方法就是对着日历一天一天数,可是遇到比较多的天数呢?这时候就需要用到ex
- 华硕灵耀Pro 16是一款娱乐影音笔记本电脑,采用了amd ryzen 9 5000系列处理器以及发烧级独立显卡,能够满足用户们日常娱乐使用
- 11月26日,Win10微软小娜(Cortana)笔记本增加了新的项目:学术。这项功能对于学生群体来说可能会比较受欢迎。微软小娜学术兴趣默认
- win10电脑libcurl.dll丢失怎么办?win10系统是大家现在都在使用的电脑操作系统,最近有用户在安装win10操作系统的电脑时,
- 条形码怎样制作?哪里有设计条形码的工具?iBarcoder mac破解版能够让用户可以轻松设计并打印自己的条码标签,以及创建条码图形的零售包
- 致命错误:Unhandled e0434352h Exception at 7538845dh怎么办?AutoCAD可以说是设计人员必备的一
- PPT制作过程中,应该如何设计才能做出极具逼格的PPT模板?是图片?文字?动画?其实,一个高逼格的PPT需要多个条件同时具备,但有只要有一样
- 微软今天召开了第二届Edge Web峰会,与众多Web开发者共同探讨Edge浏览器开发平台的一些全新特性,除了为开发者提供更加实用的技术和工
- 对于用户来说,会不会使用CMD命令提示符是电脑新手和老鸟最大的区别,Win10系统下的命令提示符有很多实用技巧,如果你不知道这些使用CMD的