Dim a
a = 6
If a > 3 Then
Debug.Print(">3")
ElseIf a > 5 Then
Debug.Print(">5")
ElseIf a > 6 Then
Debug.Print(">6")
ElseIf a > 9 Then
Debug.Print(">9")
End If
通过这段代码体验一下,当 a>3 的时候,不可能去运行 a>5 a>6 或者 a>9 的情况,因此,elseif 是 不满足第一个条件才会执行的判断。
这时候 把 a>3 换成 a<3 ,a 设为 =7 按道理说应该是 显示 a>6 其实显示的是 a>5,因此,可以判断出elseif 是按顺序执行只要满足情况就跳出判断。
再做一次尝试,将 a>5 和 a>6 的判断互换位置,这时候你得到的就是 a>6 的 结果了。
执行时是按1、2、3、4、……的顺序检查条件,当找到第一个符合条件的情况就执行XXX并停止检查,
是这样的。
你可以用一个简单的输出语句作个直观了解。
如
i=10
if i>11 then msgbox i
esleif i>10 then ...
....
end if
看看究竟会输出几个对话框,就明白了。
如果这种嵌套太多,并且可以用统一的条件判断的话,直接用CASE要方便易读。