本例所举例子均在vba代码窗口中测试过
需要的话可以直接复制代码测试
Sub If语句用法()
a = Int(Rnd() * 51 + 50) "随机生成50-100的整数
MsgBox a
If a >= 90 Then MsgBox "优秀"
If 80 <= a And a < 90 Then MsgBox "良好"
If 60 <= a And a < 80 Then MsgBox "合格"
If a < 60 Then MsgBox "不合格"
End Sub
单条if语句是不用写end if的,但then后面的语句需要写在同一行,如果then后面要运行多个语句可以用冒号(:)连接,如
Sub if函数用法()
a = Int(Rnd() * 51 + 50)
MsgBox a
If a >= 90 Then MsgBox "优秀": MsgBox "很好,再接再厉"
If 80 <= a And a < 90 Then MsgBox "良好": MsgBox "还不错,但还需努力"
If 60 <= a And a < 80 Then MsgBox "合格": MsgBox "有点危险哦,不努力点会被喊家长哦"
If a < 60 Then MsgBox "不合格": 喊家长
End Sub
上面例子If a < 60 Then MsgBox "不合格": 喊家长,如果a小于60则显示不合格消息框,然后调用子程序“喊家长”
Sub 喊家长()
MsgBox "老师,孩子考不好你就打他"
End Sub
如果分开写必须分行写并加上End If,上面的4个if,如果按标准写法要写4个end if
Sub If语句用法()
a = Int(Rnd() * 51 + 50)
MsgBox a
If a >= 90 Then
MsgBox "优秀"
End If
If 80 <= a And a < 90 Then
MsgBox "良好"
End If
If 60 <= a And a < 80 Then
MsgBox "合格"
End If
If a < 60 Then
MsgBox "不合格"
End If
End Sub
或写成
Sub If语句用法()
a = Int(Rnd() * 51 + 50)
MsgBox a
If a >= 90 Then
MsgBox "优秀"
ElseIf 80 <= a And a < 90 Then
MsgBox "良好"
ElseIf 60 <= a And a < 80 Then
MsgBox "合格"
ElseIf a < 60 Then
MsgBox "不合格"
End If
End Sub
很明显第一种更简结明了。
其实if……then……else也是可以写在同一行的,记得写在同一行的话是不用加end if的,多个条件之间用英文的冒号(:)连接
如:
Sub if没有endif()
a = 2
If a = 1 Then MsgBox "不符合": MsgBox "就是不符合": MsgBox "还是不符合" Else MsgBox "符合": MsgBox "找到了"
End Sub
另外要注意如果把80 <= a And a < 90写成80 <= a < 90意思就不一样了,80 <= a < 90等于80 <= a or a < 90
其实if……then……else if……else也是可以写在一行的,后面也不用加end if结束,总的来说,写在同一行里的if语句不用加end if声明if语句结束,注意的是,写在同一行里的else if之间是有一个空格的,如果写成elseif会提示错误的,例子请参考下面的用法。如果分行写ElseIf中间是不用加空格的
Sub IF函数用法()
Dim 籍贯 As String, 性别 As String, 年龄 As Integer, 政治面貌 As String,i as Integer
If Int(Rnd() * 2) = 0 Then 籍贯 = "广东" Else 籍贯 = "广东"
If Int(Rnd() * 2) = 0 Then 性别 = "男" Else 性别 = "女"
年龄 = Int(Rnd() * 50 + 30)
i = Int(Rnd() * 3)
If i = 1 Then 政治面貌 = "党员" Else If i = 2 Then 政治面貌 = "团员" Else 政治面貌 = "群众"
"请留意这上面一句的用法
MsgBox "籍贯:" & 籍贯 & ",性别:" & 性别 & ",年龄:" & 年龄 & ",政治面貌:" & 政治面貌
If (籍贯 = "广东" And 性别 = "男" And 年龄 > 60) Or ((籍贯 = "广东" And 性别 = "女" And 年龄 > 55) And (政治面貌 = "党员" Or 政治面貌 = "团员")) Then
MsgBox "符合条件"
Else
MsgBox "不符合条件"
End If
End Sub
例子中有共有四个括号,每个括号代表一个条件,后面的两个括号外面再用另一个括号把两个括号括起来,外面的括号是一个主条件,括号里的条件都是子条件。and和or的运算优先级是同等的,所以会从左往右,但括号的优先级是在and和or之上的。
and 配合 or以及括号()能产生很复杂的判断条件,只要把运算顺序弄清楚就行。