面讲了过程的声明,变量和常量的声明,以及赋值语句。今天咱们聊聊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都具备。
在单行模式下也可以执行多条语句。要求所有的语句必须在同一行上并且以冒号分开
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 语句。
简单的IF块:
If 条件 Then
语句1
…
End if
例如:
Dim a As Integer, b As Integer
a= 10
b= 20
If a > b Then
MsgBox 'a小于b'
End IF
复杂的IF块
If 条件 then
语句1
Elseif 条件2 Then
语句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
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多重判断的情况下,对于条件的使用一定要严谨
联系客服