VBA中的流程控制分為兩種,其一是條件結構式的,即根據條件判斷的結果去選擇性執行相應的語句(塊);另一種是循環,即循環地執行語句(塊)。本節介紹第一種。
1. IF
if 語句其實包含有幾種形式:
① If...Then...End If
其格式為:
If 邏輯表達式 Then
' 如果邏輯表達式為真,則執行這里的語句
End if
例如:
If 8 > 5 Then
Debug.Print "Yes"
End If
輸出結果為:Yes
② If...Then...Else...End If
其格式為:
If 邏輯表達式 Then
' 如果邏輯表達式為真,則執行這里的語句
Else
' 否則(即邏輯表達式為假),則執行這里的語句
End If
例如:
If 8 < 5 Then
Debug.Print "Yes"
Else
Debug.Print "No"
End If
輸出結果為:No
③ If...Then...ElseIf...Then...End If
與第①種類似,只是它多了一層判斷。當然,這種ElseIf是可以多層嵌套的。
其格式為:
If 邏輯表達式1 Then
' 邏輯表達式1為真,則執行這里的語句
ElseIf 邏輯表達式2 Then
' 邏輯表達式2為真,則執行這里的語句
Else
' 邏輯表達式1和2都返回了假,則執行這里的語句
End If
例如:
If 20 > 30 Then
Debug.Print "Not Right"
ElseIf 20 < 30 Then
Debug.Print "Right"
End If
輸出結果為:Right
2. Select Case
Select Case語句在功能與If語句非常相似,只是組織形式略有不同。它有2種形式
① 不帶Else的Select Case
格式為:
Select Case 測試表達式
Case 表達式1
' 如果測試表達式等於表達式1,則執行這里的語句
Case 表達式2
' 如果測試表達式等於表達式2,則執行這里的語句
Case 表達式3
' 如果測試表達式等於表達式3,則執行這里的語句
' 后面可以有更多的Case
End Select
例如常見的判斷成績等級的過程,可以用Select Case進行判斷:
Sub test()
Dim score As Integer
score = 94
Select Case score
Case Is >= 90
Debug.Print "優"
Case Is >= 80
Debug.Print "良"
Case Is >= 60
Debug.Print "中"
Case Is < 60
Debug.Print "差"
End Select
End Sub
此處有2點需要說明的,其一是上例與前面講的格式相比,在“Case 表達式” 中間有個Is。這個是用於表達式判斷時候用的格式,這樣才能夠起到類似於If...Else的作用。上例中如果直接用Case 90
的格式,則只會當score等於90的時候,才會輸出“優”,起不到范圍判斷的作用。在使用的時候,需要根據實際情況按需選擇。第二點是,在如上例中那樣進行不同范圍內的判斷時,順序很重要,如果把上例中的順序倒過來,則程序會輸出“中”,因為score=94時,Case Is >= 60
這條語句成立,后面的就不會再執行了。
② 帶Else的Select Case
其實就是類似於If語句中的Else一樣,當前面的所有情況都不符合時,就執行Else里面的語句。如上例中最后的Case Is < 60
就可以改為Case Else
:
Sub test2()
Dim score As Integer
score = 53
Select Case score
Case Is >= 90
Debug.Print "優"
Case Is >= 80
Debug.Print "良"
Case Is >= 60
Debug.Print "中"
Case Else
Debug.Print "差"
End Select
End Sub
** Select Case 番外篇 **
如果需要在Case條件中使用閉合區間,即同時出現大於且小於的情況,如上例中,大於60且小於70。則需要使用兩個Is語句,中間用逗號隔開:
Sub test2()
Dim score As Integer
score = 53
Select Case score
Case Is >= 90
Debug.Print "優"
Case Is >= 80
Debug.Print "良"
Case Is >= 60, Is <= 70
Debug.Print "中"
Case Else
Debug.Print "差"
End Select
End Sub
本系列教程其它文章
Excel VBA 入門(零)
Excel VBA 入門(一)數據類型
Excel VBA 入門(二)數組和字典
Excel VBA 入門(三) 流程控制1-條件選擇
Excel VBA 入門(四)流程控制2-循環控制
Excel VBA 入門(五)Excel對象操作
Excel VBA 入門(六)過程和函數
Excel VBA 入門(七)注釋、宏按鈕及錯誤處理
Excel VBA 入門(八)單元格邊框
Excel VBA 入門(九)操作工作薄
Excel VBA 入門(十)用戶窗體開發