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

时间:2023-05-08 21:25:47 

在日常生活中,我们常常要做出选择,例如,如果明天不下雨,我们就去郊游。在VBA中,也有类似的语句,让我们控制程序的执行方向,例如,如果单元格A1的值为0,那么就弹出警告消息“单元格A1的值不能为0”。

将上面的描述用语句来表达,如下图所示:

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

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语句选择

最后,将If-Then语句结构及其变形归纳如下:

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

标签:excel图表制作,excel常用函数,excel数据透视表,Excel教程
0
投稿

猜你喜欢

  • Word2003文档中怎么样去水印

    2023-11-01 14:05:26
  • u盘启动盘制作工具教程

    2023-09-12 20:37:11
  • 一键将美图制作成 GIF 动图mac应用Pictures to GIF

    2022-11-13 20:05:05
  • win11 22621.290/22622.290更新错误0x800f081f怎么办?

    2022-02-11 22:12:15
  • win10系统怎么投屏到电视?

    2023-06-23 06:03:30
  • 打印机拒绝访问无法连接怎么办?

    2022-02-21 08:46:08
  • Word文档对齐设置方法

    2022-07-01 17:13:21
  • 2020最流行微信头像:超漂亮的女生头像大全!

    2022-12-13 17:16:13
  • word文件中页眉页数怎么设置

    2022-08-07 14:33:46
  • win101903性能下降怎么解决?win101903性能下降处理教程

    2023-11-08 21:02:47
  • ​wise disk cleaner如何开启高级清理

    2023-11-10 10:13:58
  • 详解华硕显卡驱动如何安装

    2022-04-09 14:24:58
  • Excel表格如何转换PDF文档

    2022-12-20 03:58:53
  • windows找不到文件system32解决方法

    2022-04-30 19:35:02
  • Excel快速在单元格尾部添加数据

    2023-11-12 13:22:05
  • 盈通 bios设置,详细教您盈通主板bios怎么设置U盘启动

    2023-02-12 19:02:53
  • iOS 13.3.beta 1更新了哪些内容?如何更新到iOS 13.3.beta 1

    2023-09-05 02:00:51
  • Wps中表格制作累积折线图的操作方法

    2023-04-29 05:44:20
  • macOS Big Sur:快速入门的50个使用技巧

    2022-07-19 21:13:38
  • Win10电脑连接共享打印机错误0x00000709怎么解决?

    2022-11-26 23:06:46
  • asp之家 电脑教程 m.aspxhome.com