【烟花原创】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是先判断条件,为Ture则执行语句,否则执行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循环中,有时条件是需要自己写语句进行控制的。
      如果不写,在没有Exit 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

(0)

相关推荐

  • 流程控制语句-while循环

    和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足/while语句结构: 1 while(判断条件) 2 { 3 循环语句 4 } 举例1:使用whil ...

  • (十二)Do.....Loop循环控制语句

    当循环条件设置不当时,也会造成死循环 一.do while\until--.loop do while--.loop先判断先执行:当判断条件为真时,执行循环体 do until--.loop先判断后执 ...

  • 【烟花原创】VBA零基础之第18篇 Do…Loop循环 (二)

    上一篇讲的是当使用 While 关键字去检查 Do...Loop 语句中的条件时,有两种方法. 可以在进入循环之前检查条件,也可以在循环至少运行一次之后才检查条件. 今天要讲的是在Do-Loop循环中 ...

  • 【烟花原创】VBA零基础之第30篇 对象(五)

    一篇我们讲了如何引用对象,主要是通过从对象集合中进行引用,今天我们讲讲如何使用对象变量来引用对象. 什么是对象变量呢? 前面已经有过讲变量了,通俗的说,就是变量的类型是对象类型,象单元格,工作表,工作 ...

  • 【烟花原创】VBA零基础之第28篇 对象(三)

    上一篇讲到了对象,在VBA中,还有一个非常重要的概念:集合Collections 集合是一个包含一组类型相同的对象集.另外,其实集合自身也是一个对象. 下面列出一有些经常使用到的集合对象: 工作簿集合 ...

  • 【烟花原创】VBA零基础之第12篇 常量

    上一篇讲了变量,这一讲咱们聊聊常量(也有MS管叫常数). 一.什么是常量     常量就是程序在运行时保持一个固定的值的命名项目.     常量可以是字符串,数值,另一常量,或者任何(除Is之外) 算 ...

  • 【烟花原创】VBA零基础之第29篇 对象(四)

    引用对象是非常重要的,因为在代码里访问对象时必须指明需要操作的对象. 例如在日常中我们找某人的,肯定会喊某人的名字(不认识的可以喊美女帅哥),人家才会理你. 可在VBA代码中,你必须实打实的指明某个特 ...

  • 【烟花原创】VBA零基础之第27篇 对象(二)

    上一篇我们讲到Excel自身就是一个对象,应用程序(Application)是这个对象层次中的最顶层,下面列出了在Application对象中一些经常使用到的对象: 引用Addin 窗口Window ...

  • 【烟花原创】VBA零基础之第26篇 对象(一)

    对象,这词大家再熟悉不过了,此对象非彼对象. 对象代表应用程序中的元素. 例如在Excel中,我们用到的单元格,工作表,工作簿,图表,数据透视表等等都是对象. 引用JAVA<编程思想>里面 ...

  • 【烟花原创】VBA零基础之第19篇 Goto语句

    通过Goto语句,可以无条件地转移到过程中的指定的行,从而实现不同程序段间作流程控制. 语法: GoTo Line Line:必要参数,line可以是过程内任意的行号或行标签. 什么是行号? 用来识别 ...

  • 【烟花原创】VBA零基础之第15篇 Select Case 语句

    上一篇的咱们聊了IF-Then-Else语句,在块形式的IF判断中,如果条件比较多,IF-Then-Else 语句会计算每个Elseif 语句的表达式,另外当条件多时,Elseif对于代码的可读性大打 ...