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

 

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值