本帖最后由 hwc2ycy 于 2013-12-4 09:02 编辑
前面讲了过程的声明,变量和常量的声明,以及赋值语句。今天咱们聊聊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多重判断的情况下,对于条件的使用一定要严谨。
|