本文作者:office教程网

向左走,向右走——使用If语句选择

office教程网 2023-12-08 22:38:56
后台-系统设置-扩展变量-手机广告位-内容正文顶部
摘要:

在日常生活中,我们常常要做出选择,例如,如果明天不下雨,我们就去郊游。在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结构的扩展语法结构为:

Excel VBA MsgBox函数

下面,继续做一些有趣的事情。让VBA能够给我们弹出对话框,让用户作出响应,实现与用户交互。这里要使用VBA的内置函数:MsgBox函数和InputBox函数。 与Excel工作表函数一样,VBA也包含有各种内置函数,以简化计算和操作,而MsgBox函数和InputBox函数就是其中常用的函数。这里,先介绍MsgBox

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语句结构及其变形归纳如下:

Excel VBA员工管理系统开发

“什么?才学了点皮毛就可以开发系统了?”我想您读到这儿,看到本篇的题目,一定会感到非常疑惑。 如果您仔细体会了前面的小短文内容,就可以开始着手来试着做一些有趣的事情了。不错!现在我们就尝试用已学到的知识来逐步开发一套小系统。为何这么快就可以运用VBA来开始实战了呢?这就是Excel作为一个开发平台的优势! 不过,在

后台-系统设置-扩展变量-手机广告位-内容正文底部
未经允许不得转载:

作者:office教程网,原文地址:向左走,向右走——使用If语句选择发布于2023-12-08 22:38:56
转载或复制请以超链接形式并注明出处 演示站

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

留言与评论(共有 0 条评论)
   
验证码: