EXCEL中使用VBA编写宏代码程序时,需要控制程序的流程。最核心的两点,一是循环语句,VBA能够处理大量的数据,正是因为能够使用循环,不断的重复执行。二是判断语句,判断语句能够将复杂的工作流程细化成更小的模块,这是VBA能够处理更复杂问题的关键。今天我们着重汇总下VBA中判断语句的用。主要有两个,IF、Select Case。
自己最常用的是IF,在单一条件、或两个、或者更多比如三个条件判断都是比较好用的。如果是更多的话,建议用Select Case。
IF 判断语句
IF … Then …End If 单分支
If 条件 Then
语句1
语句2
语句N
End If
之所以叫单分支是因为程序只会流向一个分支,如下图。
比如你可以这样写,当然条件越复杂,实现的功能越复杂,代价就是代码不好理解:
IF (n> m And m > 20) Or(m<10 And n100 Or n>100) Then m = m+n
示例1:
Sub 判断是否及格()
score = 78
If score => 60 Then
MsgBox \”及格\”
End If
End Sub
IF…Then …Else…End If 双分支
If 条件 Then
语句1
语句2
Else
语句3
语句4
End If
很明显程序会流向两个分支,如图:
示例2:
Sub 判断是否及格2()
score = 58
If score => 60 Then
MsgBox \”及格\”
Else
MsgBox \”不及格\”
End If
End Sub
IF …Then…ElseIf…Else …EndIf 多分支
If 条件1 Then
语句1
语句2
ElseIF 条件2
语句3
语句4
Else
语句7
语句8
End If
这个四个两个或两个以上的多条件分支,流程图如下:
示例3:
Sub 判断是否及格3()
score = 78
If score < 60 Then
MsgBox \”不及格\”
ElseIf score < 70 Then
MsgBox \”及格\”
ElseIf score < 80 Then
MsgBox \”良好\”
Else
MsgBox \”优秀\”
End If
End Sub
Select Case 选择判断语句
当条件过多时,IF将无法完成,这是我们可以使用Select Case 选择判断语句来实现。
很明显的可以看出Selcet Case 在处理多条件判断是更有优势,流程图如下:
示例4:
Sub 判断是否及格4()
score = 98
Select Case score
Case Is > 90
MsgBox \”优秀\”
Case Is > 80
MsgBox \”良好\”
Case Is > 60
MsgBox \”及格\”
Case Else
MsgBox \”不及格\”
End Select
End Sub
示例5:
Sub 判断是否及格5()
score = 68
Select Case score
Case 90 To 100
MsgBox \”优秀\”
Case 80 To 90
MsgBox \”良好\”
Case 60 To 80
MsgBox \”及格\”
Case Else
MsgBox \”不及格\”
End Select
End Sub
示例6:
Sub 判断月份()
myMonth = \”四月\”
Select Case myMonth
Case \”一月\”, \”二月\”, \”三月\”
MsgBox myMonth & \”: 春\”
Case \”四月\”, \”五月\”, \”六月\”
MsgBox myMonth & \”: 夏\”
Case \”七月\”, \”八月\”, \”九月\”
MsgBox myMonth & \”: 秋\”
Case \”十月\”, \”十一月\”, \”十二月\”
MsgBox myMonth & \”: 冬\”
End Select
End Sub
总结:
如果你只要提供一个条件,简单的If…Then语句是最好的选择
如果你要决定运行两个条件中的一个,那么使用If…Then…Else语句
如果你的程序需要两个或多个条件,那么使用If…Then…ElseIf或者Select Case语句
如果你的程序有很多条件,那么就使用Select Case语句。这个语句比If…Then…ElseIf语句更灵活并且更容易理解。
嗯,大晚上的再也不熬夜写文章了(/大哭)。求关注,求转发。关注后留言,可有机会定制属于自己的VBA 代码工具。