Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏进行查看学习,愿与君携手共进!
在上一个章节中我们已经学习集合的循环和数字的循环,那么有时候我们并不知道我们要具体循环的次数,这个时候For—Next循环就无能为力啦!其实我们还有一种循环可以胜任这个,他就是我们本文要说的Do----Loop循环,这个循环其实在我们其他的编程语言中均有应用。一起来了解一下他。
Do...Loop,顾名思义,他的中文意思就是循环的意思,这个非常好理解。这个循环有两种实现方式,即只要或者直到某个条件为真,它们就会重复一系列的语句。只要条件为真,Do…While循环就允许你重复某个操作。这2个循环的语法如下:
需要我们注意的事情是,当操作VBA时候,一旦遇到这个循环时,它首先会判断条件的真假与否,如果判断的条件为假,那么在循环内部的语句就不会被执行,VBA将继续执行关键字Loop后面的第一条语句。相反如果条件为真,循环里面的语句则会被一条一条地执行,直到遇到Loop语句。Loop语句会告诉VBA重复这个过程,只要Do语句里的条件为真的话,他就会一直执行下去。
好啦,已经说了如此之多,我们现在来看看是如何在Excel中间使用Do…While循环语句。相信我们在前面的章节里,已经学习了如何根据一个单元格的内容来判断。现在让我们再进一步,看看如何使用DO循环语句在一系列单元格上作同样的决定。
下面例子举例说明如何使用 Do...Loop 语句:
例1:如果我们一直不点击取消按键,那么这个程序就会一直执行下去。可是一旦我们选择了VBno了,那么将会终止执行DO循环。
例2:如下是我们的第二个例子,使用了2个DO循环嵌套,当我们里面的循环计数器一旦为10的话,那么就会退出内循环。
例3:如下2个代码看似是相同的,但是他们所要表达的意思是完全不同。
第一个使用了while语句,假如输入的条件为3时执行死循环。输入其他数字时不执行死循环。
第二个语句表示 只有当条件不为3的时候才执行死循环。就是说test=3时不执行死循环。但输入其他数字就执行死循环。
总结:until 是排除条件。不否和条件的,才执行命令;while 是只执行条件。只有满足才执行命令。
PS: Exit Do 仅可以用在 Do...Loop 循环语句中,提供另一种退出 Do...Loop 的方法。可以在 Do...Loop 语句中的任何位置放置任意个 Exit Do。Exit Do 通常与条件判断语句(如 If...Then )一起使用,将控制传递给紧随在 Loop 语句后面的语句。当用于嵌套 Do...Loop 中的时候,Exit Do 将控制传递给其所在循环的上一层嵌套循环。
说到这里,我们在VBA使用的常用循环已经基本介绍完毕,那么什么是循环?其实循环是一种导致一部分程序代码重复执行的编程结构。如下几种循环,相信你已经有所了解了,在今后的应用和学习,将会频繁的用到他们。
Do…While, Do…Until, For…Next, For…Each, and While…Wend
PS:Do…While循环还有另外一种语法,你可以在循环的底部测试条件,例如:
注意,在条件被测试之时,VBA至少已经执行了一次循环里的语句。除了将条件放在循环之后外,过程SignIn示范如何使用条件跳出循环。当Exit Do语句执行时,循环便立即停止。
我们在使用DO循环的时候,请千万注意不要让循环变成无限循环,即我们常常说的死循环,会直接造成Excel奔溃的。如果你没有正确地设计你的循环,你将导致一无限循环——永无休止的循环。你将无法使用Esc键来停止该循环。在下面的过程里,因为用户忘了放置测试条件而导致了永无休止的循环:如下是一个简单的死循环,有兴趣的小伙伴们可以试试看。
PS:当你遇到死循环的话,你可以试着按下Ctrl+Break键或者Esc键,当VBA显示信息“代码执行被中断”时,点击结束以退出过程;如果按下以后没有反应的话,就说明已经无法使用按键停止了。
好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!
我是Excel教案,关注我持续分享更多的Excel技巧!
如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。
领取专属 10元无门槛券
私享最新 技术干货