打开APP
userphoto
未登录

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

开通VIP
死循环让你的Excel瞬间卡死(循环语句之DO LOOP)


关于循环语句,前面几节我们讲了:

1)、在数字范围内循环

          for

          ……

          next

2)、在集合或者是数组范围内循环

         for each

          ……

          next


本节我们来讲下,如果循环的范围不明确的时候应该用到的语句:

         DO

         ……

         LOOP


先来看一个例子:

我想在A1单元格中演示数字从1开始循环,step为1,一直往下循环。



代码如下:

Sub 数据累加()

Dim num%

Do

 num = num 1

 Cells(1, 'A') = num

Loop

End Sub


大家可以看到,按F8逐句执行时,执行完LOOP之后就自动转到DO下面的语句了, 如此重复循环下去,而不去执行END SUB。


这里有个很重要的知识点,如何做数据的累加。

 num = num 1

定义一个变量num,此变量每循环一次以后加上1,得出的结果再赋给自己,这样循环下去,变量就会自动累加。


DO……LOOP语句如果不配合停止语句,那么就是死循环了,比如上面的语句,如果你按F5执行,那么EXCEL就会卡死,要到任务管理器中关闭EXCEL程序才能退出运行。


前面章节我们学过退出某语句用EXIT,比如exit for ,同理,这里可以用EXIT DO。


比如上面的例子,A1单元格只要累加到10,然后退出程序,语句如下:


Sub 数据累加2()

Dim num%

Do

 num = num 1

   If num > 10 Then

   Exit Do

   Else

   Cells(1, 'A') = num

   End If

Loop

End Sub


加一个判断,条件成立,则退出循环。


了解了DO LOOP的基本含义后,我们看下下面的例子:



还是前面章节求金额的例子:


我们用FOR NEXT来写下:

Sub 计算金额2()

Dim ro%

For ro = 2 To 8

Cells(ro, 'f') = Cells(ro, 'd') * Cells(ro, 'e')

Next

End Sub


确定了循环是在2和8之间,如果在第8行后面继续输入数据,这段代码就不会对第8行后面的数据了进行计算了。


我们看下用DO LOOP如何实现:

Sub 计算金额()

Dim ro%

ro = 1

Do

 If Cells(ro 1, 'c') = '' Then

   Exit Do

 Else

   ro = ro 1

   Cells(ro, 'f') = Cells(ro, 'd') * Cells(ro, 'e')

 End If

Loop

End Sub


定义一个变量RO(行号row的简写),做个累加,利用if进行判断,当行号加1下面的行(这里选取了Cells(ro 1, 'c'))没有数据时,exit do,退出循环,否则就按要求进行计算金额。


这样当你下面输入数据时,这段代码都能进行计算。


这就是DO LOOP 的独特之出,大家仔细体会。


今天的分享就到这里。


视频教程正在陆续录制中(目前录制了八节了),需要的同学可以加我微信号:527240310,付费的,一次付费后,以后所录视频均可以免费索取,而且不懂的地方可以交流。非诚勿扰,谢谢配合!


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第一章、Excel VBA基础知识
006.VBA循环语句Do While
VBA笔记:基础语句结构
EXCEL VBA 零基础教程:最全的循环语句(办公室 职场必备 )
Exit for退出for循环语句示例
教程 | VBA中Exit语句知多少
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服