关于循环语句,前面几节我们讲了:
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,付费的,一次付费后,以后所录视频均可以免费索取,而且不懂的地方可以交流。非诚勿扰,谢谢配合!
联系客服