循环多次重复指令,可以节省大量时间。
Excel VBA 中存在以下类型的循环:
以下代码将数字序列插入到 A 列的每个单元格中(从 1 到 12):
Sub while_loop() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 Cells(6, 1) = 6 Cells(7, 1) = 7 Cells(8, 1) = 8 Cells(9, 1) = 9 Cells(10, 1) = 10 Cells(11, 1) = 11 Cells(12, 1) = 12 End Sub
这段代码非常重复...
想象一下,如果我们必须将连续的数字插入到数百个单元格中,而不仅仅是 12 个单元格中……现在您明白为什么循环非常有用了。
我们举一个空循环While的例子:
Sub while_loop() While [健康)状况] '指示 Wend End Sub
只要条件为真,循环中的语句就会继续执行(但要注意不要造成无限循环)。
下面是前面讨论过的循环宏,变成了 While 循环:
Sub while_loop() Dim num As Integer num = 1 '起始编号(在本例中,它是行号和要设置的值) While num <= 12 '只要num变量小于或等于12,指令就会被执行 Cells(num, 1) = num '编号 num = num + 1 '每次循环结束时数字加1 Wend End Sub
在宏中使用此循环,如果我们需要 400 个磁带而不是 12 个磁带,我们所要做的就是用 400 个磁带替换 12 个磁带。
还有另一种方法可以编写与 While Wend 相同的循环(只要 While 命令中包含的某个条件为真就运行):
Sub do_while_loop() Do While [健康)状况] '指示 Loop End Sub
以下版本显示可以将条件写入 Do Loop 循环的末尾,这意味着指令将至少执行一次:
Sub do_while_loop() Do '指示 Loop While [健康)状况] End Sub
如果我们将 While 替换为 Until,我们也可以按条件退出循环,而不是在满足条件时循环:
Sub do_while_loop() Do Until [健康)状况] '指示 Loop End Sub
Sub for_loop() For i = 1 To 5 '指示 Next End Sub
For 循环将在此处重复 5 次。
每次重复这个循环,变量 i 就会自动加 1:
Sub for_loop() For i = 1 To 5 MsgBox i Next End Sub
可以使用以下指令提前退出 For 循环:
Exit For '退出 For 循环
让我们考虑一个可以清楚地表明这一点的示例:
Sub for_loop() Dim max_loops As Integer max_loops = Range("A1") '在单元格 A1 中,我们指定了重复次数的限制 For i = 1 To 7 '预期周期数:7 If i > max_loops Then '如果单元格 A1 为空或包含小于 7 的数字,则减少重复次数 Exit For '如果前面的条件为 TRUE,则退出循环 For...loop End If MsgBox i Next End Sub
其他 Exit 运算符:
Exit Do '循环退出Do Loop
Exit Sub '退出程序
Exit Function '退出功能