1. 程式人生 > >VBA-迴圈語句之Do...Loop

VBA-迴圈語句之Do...Loop

宣告:筆記來源於我要自學網-《Excel VBA基礎教程》-授課講師:曾賢志

Do ... Loop 迴圈語句,直到滿足某個條件

Sub DoLoop基本示例()
Dim a%
Do
a = a + 1
    If a > 10 Then
    MsgBox a & "終於大於10"
    Exit Do
    End If
Loop
End Sub

例項應用:將大於等於90分的勾選出來

Sub 判斷成績並打勾()
Dim rs%
rs = 1
Do
    rs = rs + 1
        If rs > 10 Then
            Exit Do '這裡也可以寫做Exit sub,因為已經完成了所有判斷,直接就退出整個子過程
        Else
            If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
        End If
Loop
End Sub
Sub 迴圈語句while() '該程式碼比上面這個程式碼更簡潔
Dim rs%
rs = 2
Do While Cells(rs, 2) <> "" '當單元格不等於空時,則迴圈
    If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
    rs = rs + 1
Loop '迴圈
End Sub
Sub 迴圈語句DOLOOP2()
Dim rs%
rs = 2
Do Until Cells(rs, 2) = "" '直到單元格為空時,才結束
    If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
    rs = rs + 1
Loop '迴圈
End Sub

例項應用:進行隔行填色

Sub 隔行填色例項應用()
    Dim rs%
    rs = 2
    Do Until Sheet1.Range("a" & rs) = ""
    Sheet1.Range("a" & rs & ":g" & rs).Interior.ColorIndex = 7
    rs = rs + 2
    Loop
End Sub

while與until不但可以放在Do後面,也可以放在loop後面 事實上有時在迴圈的最後一行進行判斷,更具有意義

Sub doloop的最後判斷迴圈()
Dim pa$, i!
Do
i = i + 1   '作用是對輸入次數做個累加
If i > 3 Then Exit Do   '當輸入錯誤超出3次,就關閉了視窗,退出了Do迴圈
    pa = InputBox("請輸入密碼")   '在輸入框鍵入密碼;先鍵入密碼,再做判斷
Loop Until pa = "123" '判斷鍵入的密碼是不是123,如果是就退出迴圈,不是則繼續迴圈
End Sub

***Do...Loop語法小結*** Do [{While | Until} 表示式] [執行的一條或多條語句] [Exit Do] [執行的一條或多條語句] Loop --------------------------------------------------------- while:當這個條件為True時就 迴圈 until:直到這個條件為True時就 跳出迴圈 --------------------------------------------------------- 或者可以使用下面這種語法: Do [執行的一條或多條語句] [Exit Do] [執行的一條或多條語句] Loop [{While | Until}表示式] ------------------------------------------------------------------------------------------------------------------------------------------------------------------- 用Do...Loop迴圈要注意的幾點:      1,While與Until是放在Do後面還是Loop後面,取決於是先判斷再迴圈,還是先迴圈再判斷。      2,可以在Do...Loop中的任何位置放置任意個數的 Exit Do 語句,隨時跳出 Do...Loop 迴圈。      3,Do...Loop + If...Then + Exit Do 通常結合使用。      4,如果Exit Do 使用在巢狀的 Do...Loop 語句中,則 Exit Do 會將控制權轉移到 Exit Do 所在位置的外層迴圈。

Sub 第3點例子例項()
Dim a%
Do
a = a + 1
    If a > 5 Then
        MsgBox a & "終於大於5"
        Exit Do
    End If
Loop
End Sub
Sub 第4點例子例項() '注意這是一個死迴圈,按F8執行(中止死迴圈:Ctrl+暫停鍵)
Do
b = b + 1
    Do
        a = a + 1
        If a > 3 Then MsgBox "即將跳出內層迴圈": Exit Do
    Loop
MsgBox "即將進行外層迴圈"
Loop
End Sub