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

在日常生活中,我们常常要做出选择,例如,如果明天不下雨,我们就去郊游。在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语句结构及其变形归纳如下:

赞(71)
office办公分享 » 向左走,向右走——使用If语句选择

本文链接:向左走,向右走——使用If语句选择https://www.officeapi.cn/87438.html

抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

OFFICE,天天学一点,进步多一点

联系我们