Excel VBA入門(三) 流程控制1-條件選擇


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 入門(十)用戶窗體開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM