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分的勾选出来

VBA-循环语句之Do...Loop_第1张图片

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

实例应用:进行隔行填色

VBA-循环语句之Do...Loop_第2张图片

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

 

你可能感兴趣的:(Visual,Basic宏语言)