异常导致循环退出_Excel中使用VBA你不可不知道循环语句,干货分享

概述

如果在VBA程序中,需要多次执行同一任务(即重复同一段代码),则可以使用循环来完成。

VBA循环类型包括:

  • For循环For Loop
  • Do While循环Do While Loop
  • Do Until循环Do Until Loop

下面分别讨论每种循环类型。

For循环

For循环采用两种不同的形式,即For ... Next循环和For Each循环。

For ... Next循环

For ... Next循环使用一个变量,该变量遍历指定范围内的一系列值,对每个值执行循环体中的代码,如下所示:

c8b2330ed0b781381d17a279eda1495e.png

示例中的For ... Next循环设置变量i的值为1、2、3、…、10,并且对于每一个值,都执行同一段代码。因此,在上面的例子中,循环将数组iArray的每个元素值加到变量Total中。

上面的示例中没有指定步长,因此循环从1增长到10的过程中,使用默认步长1。但是,也可以使用不同的步长来执行循环,使用Step关键字实现这一功能,如下所示:

49c1d3fe5af9e2e9c8465110aa114b32.png

在上面的示例中,步长被指定为0.1,因此每次循环时,变量d的值依次设置为0.0、0.1、0.2、0.3、…、9.9、10.0。

也可以使用负步长,如下所示:

a26ec2fa47950a61770be89ab48c01ad.png

在上面的示例中,步长被指定为-1,因此循环将变量i依次设置为值10、9、8、…,1。

For Each循环

For Each循环类似于For ... Next循环,但是For Each循环遍历一组对象中的每个对象,而不是获取变量的一系列值。例如,以下代码使用For Each循环列出当前Excel工作簿中每个工作表:

c6c4c8e0797a7aa50aee62116fc03386.png

Exit For语句

Exit For语句用于提前退出For循环,该语句将导致VBA跳出循环并继续执行循环体外的下一行代码。例如,在数组中搜索特定值时,使用循环检查数组的每个元素,一旦找到目标值,就不需要再继续搜索,此时可以提前退出循环。

下面的示例Exit For语句的使用,代码循环遍历100个数组元素,并将每个元素与值dVal进行比较,如果找到dVal值,循环将提前退出:

ff66ce6077bdee36a4d9769885028d98.png

Do While循环

当指定的条件求值为True时,Do While循环重复执行一段代码。如下子程序所示,Do While循环用于打印Fibonacci序列的所有值,直到当前值大于1000时停止循环:

554fa1f01ea9f8c48eea23b4f40c3185.png

同以上可以看出,条件iFib_Next<1000在循环开始时被测试。因此,如果iFib_Next的第一个值大于1000,则根本不会执行循环。

还可以把Do While循环的条件测试放在循环的末尾,这将导致循环至少执行一次,而不管条件最初的计算结果是否为True。

以下代码显示了Do While循环的另一种形式,在循环末尾测试条件:

5702eb96e770c89558ef3b88eb5a52ad.png

Do Until循环

Do Until循环与Do While循环非常相似,重复执行一段代码,直到指定的条件计算为True。如下子程序所示,使用Do Until循环从工作表a列的所有单元格中提取值,直到遇到空单元格为止:

3dc4107f8db6c1bbd6f1b514050ae444.png

在上面的例子中,由于条件IsEmpty(Cells(iRow,1))处于Do Until循环的开始,因此只有遇到的第一个单元格非空时,才会进入循环。

与Do While循环相同,如果希望至少进入一次循环,而不管初始条件如何,在这种情况下,条件可以放在循环的末尾,如下所示:

266cfd97641f3577d7dfd855d14c0e13.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值