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

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

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

文章插图
VBA中If-Then语句结构的基本语法如下:
If 条件 Then 条件为真时执行的语句 [Else 条件为假时执行的语句]
说明:
条件为真(假)时执行的语句可以为一条或多条 。
方括号中的Else子句可选 。
前述示例完整的过程代码为:
Sub testIf()
If Range(“A1”).Value = https://www.i8ku.com/2021/0 ThenMsgBox “单元格A1的值不能为0”
End Sub
或者:
Sub testIf2()
If Range(“A1”).Value = https://www.i8ku.com/2021/0 Then
MsgBox “单元格A1的值不能为0”
End If
End Sub
注意,在过程testIf2中,将If-Then语句写在多行中,此时应加上End If语句 。在If-Then行与End If行之间,可以添加多条语句 。
再看看下面的代码:
Sub testIf3()
If Range(“A1”).Value = https://www.i8ku.com/2021/0 Then
MsgBox “单元格A1的值不能为0”
Else
Range(“B1”).Value = https://www.i8ku.com/2021/20 /Range(“A1”).Value
End If
End Sub
代码的意思是:如果单元格A1的值为0,那么就弹出警告消息“单元格A1的值不能为0”;否则,就用20来除以单元格A1中的值,并将结果填写到单元格B1中 。
当然,下面的代码也可以实现上述功能,只是使用了更多的If-Then语句:
Sub testIf4()
If Range(“A1”).Value = https://www.i8ku.com/2021/0 ThenMsgBox “单元格A1的值不能为0”
If Range(“A1”).Value <> 0Then Range(“B1”).Value = https://www.i8ku.com/2021/20 / Range(“A1”).Value
End Sub
我们再多一些条件,如下面的代码:
Sub testIf5()
If Range(“A1”).Value = https://www.i8ku.com/2021/0 ThenMsgBox “单元格A1的值不能为0”
If Range(“A1”).Value <= 10Then Range(“B1”).Value = https://www.i8ku.com/2021/20 / Range(“A1”).Value
If Range(“A1”).Value > 10 ThenRange(“B1”).Value = https://www.i8ku.com/2021/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 = https://www.i8ku.com/2021/0 Then
MsgBox “单元格A1的值不能为0”
ElseIf Range(“A1”).Value <= 10Then
Range(“B1”).Value = https://www.i8ku.com/2021/20 /Range(“A1”).Value
Else
Range(“B1”).Value = https://www.i8ku.com/2021/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 = https://www.i8ku.com/2021/0 Then

推荐阅读