向左走,向右走——使用If语句选择
发布时间:2023-05-08 21:25:47
在日常生活中,我们常常要做出选择,例如,如果明天不下雨,我们就去郊游。在VBA中,也有类似的语句,让我们控制程序的执行方向,例如,如果单元格A1的值为0,那么就弹出警告消息“单元格A1的值不能为0”。
将上面的描述用语句来表达,如下图所示:
VBA中If-Then语句结构的基本语法如下:
If 条件 Then 条件为真时执行的语句 [Else 条件为假时执行的语句]
说明:
条件为真(假)时执行的语句可以为一条或多条。
方括号中的Else子句可选。
前述示例完整的过程代码为:
Sub testIf()
If Range(“A1”).Value = 0 ThenMsgBox “单元格A1的值不能为0”
End Sub
或者:
Sub testIf2()
If Range(“A1”).Value = 0 Then
MsgBox “单元格A1的值不能为0”
End If
End Sub
注意,在过程testIf2中,将If-Then语句写在多行中,此时应加上End If语句。在If-Then行与End If行之间,可以添加多条语句。
再看看下面的代码:
Sub testIf3()
If Range(“A1”).Value = 0 Then
MsgBox “单元格A1的值不能为0”
Else
Range(“B1”).Value = 20 /Range(“A1”).Value
End If
End Sub
代码的意思是:如果单元格A1的值为0,那么就弹出警告消息“单元格A1的值不能为0”;否则,就用20来除以单元格A1中的值,并将结果填写到单元格B1中。
当然,下面的代码也可以实现上述功能,只是使用了更多的If-Then语句:
Sub testIf4()
If Range(“A1”).Value = 0 ThenMsgBox “单元格A1的值不能为0”
If Range(“A1”).Value <> 0Then Range(“B1”).Value = 20 / Range(“A1”).Value
End Sub
我们再多一些条件,如下面的代码:
Sub testIf5()
If Range(“A1”).Value = 0 ThenMsgBox “单元格A1的值不能为0”
If Range(“A1”).Value <= 10Then Range(“B1”).Value = 20 / Range(“A1”).Value
If Range(“A1”).Value > 10 ThenRange(“B1”).Value = 100 / Range(“A1”).Value
End Sub
如果单元格A1的值为0,那么就弹出警告消息“单元格A1的值不能为0”;如果单元格A1中的值小于等于10,就用20来除以单元格A1中的值,并将结果填写到单元格B1中;如果单元格A1中的值大于10,就用100来除以单元格A1中的值,并将结果填写到单元格B1中。
改写If-Then结构实现相同的效果,代码如下:
Sub testIf6()
If Range(“A1”).Value = 0 Then
MsgBox “单元格A1的值不能为0”
ElseIf Range(“A1”).Value <= 10Then
Range(“B1”).Value = 20 /Range(“A1”).Value
Else
Range(“B1”).Value = 100 /Range(“A1”).Value
End If
End Sub
由上可知,在多条件下If-Then结构的扩展语法结构为:
If 条件Then
条件为真时执行的语句
[ElseIf 另一条件Then
另一条件为真时执行的语句]
[Else
所有条件都为假时执行的语句]
End If
说明:
可以有多个ElseIf子句,但最多只有一个Else子句。
当然,还可以使用嵌套的If-Then-Else结构,即一个If-Then-Else结构嵌套于另一个If-Then-Else结构中。例如,将上例改写为:
Sub testIf7()
If Range(“A1”).Value = 0 Then
MsgBox “单元格A1的值不能为0”
Else
If Range(“A1”).Value <= 10Then
Range(“B1”).Value = 20 /Range(“A1”).Value
Else
Range(“B1”).Value = 100 /Range(“A1”).Value
End If
End If
End Sub
实现的效果相同,但是应特别注意If与Else和End If的配对正确。
下面举一个例子,说明If-Then结构的应用。
如下表所示的规则,根据员工的工龄来确定员工的年休假天数:
工龄(年)年休假天数
10年及以下5
10~2010
20~2515
25年以上20
转换成VBA代码如下:
Sub NianXiuTian()
‘声明变量,用来表示年休天数和工龄
Dim lngDays As Long
Dim lngYears As Long
lngYears = Range(“A1”).Value
‘根据工龄确定相应的年休天数
If lngYears >= 0 And lngYears <= 10Then
lngDays = 5
ElseIf lngYears > 10 And lngYears <=20 Then
lngDays = 10
ElseIf lngYears > 20 And lngYears <=25 Then
lngDays = 15
Else
lngDays = 20
End If
MsgBox “工龄:” &lngYears & vbCrLf & “年休天数:” &lngDays
End Sub
此时,您可以在工作表单元格A1中输入代表工龄的数字,运行代码后,会显示相应的年休天数,如下图所示。
最后,将If-Then语句结构及其变形归纳如下:
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 在excel表格中打印时,需要分奇偶页来打印,应该怎么设置?下面就跟小编一起来excel表格设置打印奇偶页的技巧,希望看完本教程的朋友都能学
- 表格内的数字带单位,直接加减乘除去计算,就会得到瑟瑟发抖的 #VALUE!错误提示,那这种带单位的Excel表格怎么计算呢?
- 做好U盘启动了,一般会设置bios,调整启动顺序,其实还有更简单的方法,开机启动按键可以选择USB启动。本文就是整理各大品牌和主板启动按键。
- 不知道大家在安装系统的过程中有遇到错误提示:“计算机意外地重新启动或遇到错误。Windows安装无法继续。若要安装Windows,请单击“确
- “生成语音”工具可让您粘贴或键入文本,并生成真实的画外音或旁白轨道。该工具使用操作系统提供的库。使用此工具可创建视频、游戏和音频作品的合成声
- 有些iPhone用户在拍了照片之后,就不再管那些照片了,因而使得自己的iPhone上积累了许多照片,这些照片会使得iPhone运行的速度减慢
- PPT音乐怎么从头到尾一直播放?近期有用户想要给PPT中添加的音乐设置全程播放,那么应该如何操作呢?其实方法很简单,下面小编就为大家演示具体
- Win10开机欢迎界面的时间过长,很多朋友们想把它关闭,那么Win10怎么关闭欢迎界面?下面小编就给大家带来Win10关闭开机欢迎界面的方法
- 很多想购买 iPad 的用户都会在 iPad Pro 和 iPad Air 之间纠结,前者虽然性能强悍但价格昂贵,iPad Pro 11 寸
- U盘格式化时提示“Windows无法完成格式化”怎么解决?很可能是操作系统还未检测到U盘导致的问题,我们可以在DOS环境下对U盘进行重新检测
- 虽然现在大部分年轻人都使用的是拼音输入法,但是还是有很多用户使用的还是五笔输入法,并且在日常生活和工作的过程中都使用的是五笔输入法。这些使用
- 1、选择数据区域中的某个单元格,在功能区中选择“插入→柱形图→堆积柱形图”。2、右击“流失客户”系列,在弹出的快捷菜单中选择“设置系列格式”
- 有 许多 伴侣想在演示文稿中 建造倒计时, 可是 建造 办法甚多 好比说“ 拔出Flash”等, 现在天教 各人 利用WPS演示 建造倒计时
- excel表格中数字显示乱码全是#符号怎么办?有时候网上下载的表格中,准考证号,身份证号,日期的数值类的数据,经常会显示不出来,或者不完整。
- Parallels Desktop 18是很常用的虚拟机工具,无论安装还是使用都是很方便的,使用过程中遇到的问题也就越来越多,今天为大家解决
- 很多用户升级了win10系统之后在下载软件或者打开第三方网页的时候都会出现病毒误报,那么该怎么办呢?今天就给你们带来了win10病毒误报解决
- 近期有部分Win11用户在电脑的使用中,法发现电脑服务器时间和本地时间经常对不上,那么我们应该如何解决呢?带着这份困惑,我们一起来看看下面这
- 下面本文与大家分享下Win8如何共享打印机以及Win8添加共享打印机方法,其操作步骤与我们之前的Win7或者XP系统区别也不是很大,感兴趣的
- Mac上好用的视频转码器工具是哪个?今日软件推荐:EditReady:一款强大的视频转码工具。EditReady for Mac是专业高效的
- 我们在电脑中玩游戏的时候,遇到游戏闪退也是很正常的事情,就像众多吃鸡玩家遇到的绝地求生游戏在运行的时候闪退的问题。有用户在运行绝地求生的时候