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子句与后面的指令写在一行上,那么必须在它们之间加上冒号(:)。
猜你喜欢
- excel表格中不同部门的员工怎么快速输入编号?excel表格中想要给不同部门的员工填充编号,该怎么快速填充编号呢?下面我们就来看看详细的教
- 目前许多用户使用的系统都是Win10系统,但是对于部分老用户来说,还是习惯使用Win7系统。那么有没有什么办法把win10系统的一些样式调整
- Word停止工作怎么?word停止工作解决办法一、可能是normal.dot模板损坏了。normal.dot是一个自动保存模板,比如写着wo
- 最近一直在用Office Web Apps,使用过程会有各种各样的错误,众所周知,sharepoint的错误都在15/Logs下面保存错误日
- 第一,使用word内置的全半角转换word中全角的标点符号占两个字节,半角的标点符号占一个字节。在word2010版提供了包括标点符号、字母
- 步骤如下:打开表格文件,选择要插入的表格中的位置。选择插入----对象-----由文件创建浏览选择要添加的文件,然后选择显示为图标不要选择链
- 在日常生活中,很多日期时间复制到Excel中会在一个单元格中,今天小编为大家分享在excel中利用函数从日期里面提取出年月日方法,一起来看看
- 对于报纸来说,小伙伴们可能没有经常看到过纸质版的,但是,相信大家对于报纸的排版都不会觉得陌生,因为现在还有很多电子版的报纸,比如人民日报的电
- Word是一款经常使用的办公软件之一,我们为了防止机密泄露,经常会把文档加密,那你知道Word中将文档加密后怎么解开的吗?接下来我们一起往下
- 许多win10系统的用户会使用记事本来编辑一些文件。然而,当他们另存为时,却发现自己无法另存为,只能跳出保存的窗口。怎么了?现在,针对这个问
- Word文档中制表符的使用方法。1、启动Word 2013,打开需要进行编辑的文档,单击水平标尺左侧的制表符按钮,直到出现右对齐制表符为止。
- word怎么输入商标特殊符号?想要输入一个商标符号,该怎么输入呢?下面我们就来看看详细的教程,下面我们就来看看word商标特殊符号的教程,需
- 步骤/方法首先在word中输入123456 然后选中输入的阿拉伯数字,在菜单栏中点击插入—数字。 &
- 微软商店是微软公司在Windows系统中内置的一款非常好用的下载软件的平台。许多用户在装电脑的时候都会从里面下载一些应用使用,但是有些小伙伴
- 本文介绍如如何用Word2007来制作文档水印,其中包括文字水印和图片水印,以及如何添加水印。一、用Word2007为文档添加文字水印在wo
- 在WORD中制作表格的时候,有时候在单元格中输入内容时,当内容多超出表格中的单元格时,表格就会自动变化。那么如何能使word文档输入内容而不
- 在Excel 2019中,还可以用各种视图的方式查看工作表。普通视图是默认的显示方式,即对工作表的视图不做任何修改。可以使用右侧的垂直滚动条
- 在wps文字中修改近期文档数目的方法:一、在电脑桌面的wps文字程序图标上双击鼠标左键,将其打开运行。如图所示;
- 在Excel表格中如何用颜色标识数字如下图,C列数字发生变化时D列的颜色长度也跟着变动,是怎么做到的?其实这个,就是条件格式,只不过是Exc
- Word中怎么设置页眉?相信许多用户在办公或者学习的时候都需要使用到Word文档,而一份美观的Word文档会带来很多便利。而页眉设置就是其中