【烟花原创】VBA零基础之第14篇 IF...Then..Else语句
前面讲了过程的声明,变量和常量的声明,以及赋值语句。今天咱们聊聊IF…Then…Else语句。
在工作表中,写公式时大家对IF函数应该不陌生,根据条件的不同,返回不同的值。
在VBA中,我们通过使用IF语句实现根据表达式的值有条件的执行一组语句。
语法
单行形式
IF 条件 Then 语句1 Else 语句2
条件一般为数据表达式或字符串表达式,其运算结果为True或False。
在没有Else子句时,语句1则为必选参数。有Else语句时语句2则为必选参数
Dim a As Integer, b As Integer
a= 10
b= 20
If a > b Then Else MsgBox "a小于b"
Rem 省略语句1
If a < b Then MsgBox "a大于b"
REM 省略了ELSE子句
IF a=b then msgobx "a等于b“ else msgbox "a不等于b”
REM 语句1,语句2都具备。
Rem 省略语句1
If a < b Then MsgBox "a大于b"
REM 省略了ELSE子句
IF a=b then msgobx "a等于b“ else msgbox "a不等于b”
REM 语句1,语句2都具备。
在单行模式下也可以执行多条语句。要求所有的语句必须在同一行上并且以冒号分开
Dim a As Integer, b As Integer, c As Boolean
a= 10
b= 20
If a > b Then Else MsgBox "a<b": c = a > b
块形式:
提供更强的结构化与适应性,并且通常也是比较容易阅读、维护及调试。
要决定某个语句是否为一个 If 块,可检查 Then 关键字之后是什么。
如果在 Then 同一行之后,还有其它非注释的内容,则此语句就是单行形式的 If 语句。
如果在 Then 同一行之后,还有其它非注释的内容,则此语句就是单行形式的 If 语句。
简单的IF块:
If 条件 Then
语句1
…
End if
例如:
Dim a As Integer, b As Integer
End if
例如:
Dim a As Integer, b As Integer
a= 10
b= 20
If a > b Then
MsgBox "a小于b"
End IF
MsgBox "a小于b"
End IF
复杂的IF块
If 条件 then
If 条件 then
语句1
Elseif 条件2 Then
语句2
语句2
Elseif 条件3 Then
语句3
Else
其他语句…
End if
当程序运行到一个 If 块,条件1 将被测试。如果条件1 为 True,则在 Then 之后的语句会被执行。
如果条件1 为 False,则每个 ElseIf 部分的条件式(如果有的话)会依次计算并加以测试。
如果找到某个为 True 的条件时,则其紧接在相关的 Then 之后的语句会被执行。
如果没有一个 ElseIf 条件式为 True(或是根本就没有 ElseIf 子句),则程序会执行 Else 部分的语句。
而在执行完 Then 或 Else 之后的语句后,会从 End If 之后的语句继续执行。
Else 和 ElseIf 子句都是可选的。在 If 块中,可以放置任意多个ElseIf 子句,但是都必须在 Else 子句之前。
例如:
Dim lChenji As Byte
Dim strResult As String
lChenji = 50
If lChenji > 90 Then
'条件1:成绩是否大于90分
strResult = "优秀"
ElseIf lChenji > 80 Then
'条件2:成绩是否大于80分
strResult = "良好"
ElseIf lChenji >= 60 Then
'条件3:成绩是否大于等于60分
strResult = "及格"
Else
'所有以上条件都不满足时,不及格
strResult = "不及格"
End If
MsgBox strResult
另外If 块也能像IF函数实现嵌套,还是上面的例子,改成IF嵌套
Dim lChenji As Byte
Dim strResult As String
Dim lChenji As Byte
Dim strResult As String
lChenji = 80
If lChenji >= 60 Then
'先判断成绩是否及格
If lChenji > 90 Then
'子条件1:成绩是否大于90分
strResult = "优秀"
ElseIf lChenji > 80 Then
'子条件2:成绩是否大于80分
strResult = "良好"
Else
'上述子条件不满足的情况下
strResult = "及格"
End If
Else
'不及格
strResult = "不及格"
End If
MsgBox strResult
在IF多重判断的情况下,对于条件的使用一定要严谨。
赞 (0)