打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跟烟花入门VBA之17:Do…Loop循环 (一)

 上一篇聊过了以指定次数执行语句的FOR NEXT循环,但是当我们不知道循环具体会运行多少次,但能通过某种条件的变化来实现控制循环的开始和结束,这便是今天咱们要聊聊的的DO…Loop循环

一、当条件为 True 时重复语句
语法:
1.条件前置
    Do While 条件表达式
        执行语句
        Exit Do
        执行语句
        条件控制语句
    Loop

2.条件后置
    Do
        执行语句
        Exit Do
        执行语句
        条件控制语句
    Loop While 条件表达式

    条件表达式:可选参数,其值为TRUE或FALSE,当省略条件表达式时,While关键字也不需要写。
    示例省略了while和条件表达式,但这样循环如果不用上EXIT DO则永远无法结束。
    Dim i As Long
    Do
        i = 1
    Loop

    Exit Do:通常用于条件判断之后,例如 If...Then。
    在这种情况下,Exit Do 语句将控制权转移到紧接在 Loop 命令之后的语句(提早退出所在的DO…LOOP循环)。
    Dim i As Long, j As Long
     i = 1: j = 1
    Do While i < 100
        j = j + i
        If j > 100 Then Exit Do
        i = i + 1
    Loop
    MsgBox 'i=' & i

    上述1,2两种形式的区别在于,形式1是先判断条件,为TRUE则执行语句,否则执行LOOP之后的语句;
    形式2是先执行一次,执行完后再进行判断,条件为TRUE的情况下再继续执行循环。
    简单的说,就是形式1(条件前置)有可能循环语句一次也不会执行,形式2(条件后置)最少执行一次。
    例如
    Dim counter As Integer
    Dim myNum As Integer
    counter = 0
    myNum = 9
    Do While myNum > 10
        counter = counter + 1
        myNum = myNum - 1
    Loop
     ‘myNum的初始值是9,测试条件是myNum>10。
     ’由于是条件前置,所以先检测条件,结果为FALSE,循环执行0次

    Dim counter As Integer
    Dim myNum As Integer
    counter = 0
    myNum = 9
    Do
        counter = counter + 1
        myNum = myNum - 1
    Loop While myNum > 10
     'myNum的初始值是9,测试条件是myNum>10。
      '由于是条件后置,先执行一次循环然后再判断,结果为FALSE,循环结束,循环执行1次。

    条件控制语句: 可选语句
    在FOR…NEXT循环中,计数器变量在执行完语句后会自动累加步长值。
    在DO…LOOP循环中,有时条件是需要自己写语句进行控制的。
      如果不写,在没有EIXT DO的情况下,循环会永远无法结束,这样就陷入死循环中了。
    例如下面的代码:myNum的初始值是20,循环的条件是mynum>10,
    条件控件语句是mynum=mynum-1,如果缺少条件控制语句,循环无法停止。
    Dim counter As Integer
    Dim myNum As Integer
    counter = 0
    myNum = 20
    Do While myNum > 10
        counter = counter + 1
        myNum = myNum - 1
    Loop

    循环体内执行的可执行语句也是可选的,通常情况下都会写。

    示例,用循环的方法求大于0的整数的2进制数值(10进制转2进制)
    Sub Dec2Bin()
        '大于0的整数转换成2进制
        Dim i As Long, j As Long
        Dim str As String, strMsg As String
        i = 1000: j = i
        Do While i <> 0
            str = i Mod 2 & str
            'i mod 2 取得 i 除以2的余数
            i = i \ 2
            '\,用来对两个数作除法并返回一个整数
          Loop
        strMsg = j & ' 的2进制数为:' & vbCrLf
        strMsg = strMsg & str & vbCrLf
        MsgBox strMsg
    End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBScript循环语句
使用 Do...Loop 语句的事例(VBA)
(十二)Do.....Loop循环控制语句
vb.net的循环语句
vba遍历字符串_VBA中三种循环语句的讲解及实例应用_weixin
ASP脚本循环语句
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服