VBA 程序循环结构
VBA 中,循环结构用于多次重复执行同一段代码。重复次数通过特定数字或特定条件控制。
通过控制循环过程中特定变量,循环结构可执行复杂的重复任务。
循环结构的执行流程可简单的表示如下:
VBA 循环结构类型
VBA 中循环结构有 3 种类型,它们是:
For 循环
Do While 循环
Do Until 循环
下面分别介绍 3 种类型循环结构语法以及用法。
For 循环
For 循环是最常用的循环类型,它有两种形式:
For … Next 循环
For Each 循环
For … Next 循环
使用 For ... Next
循环可以按指定次数,循环执行一段代码。For 循环使用一个数字变量,从初始值开始,每循环一次,变量值增加或减小,直到变量的值等于指定的结束值时,循环结束。
For ... Next
循环语法如下:
For [变量] = [初始值] To [结束值] Step [步长]'这里是循环执行的语句Next
其中:
[变量]
是一个数字类型变量,可在循环执行的语句里使用。[初始值]
和[结束值]
是给定的值;[步长]
是每次循环时,变量的增量。如果为正值,变量增大;如果为负值,变量减小。
下面看一个实际的例子,求 1 至 10 数字的累积和。
Sub MyCode()Dim i As IntegerDim sum As Integer For i = 1 To 10 Step 1sum = sum + iNextEnd Sub
可以看到,For 循环使用 i
变量,循环 10 次,i
的值从 1 到 10 变化。
值得注意的是,For 循环的 Step 值如果是 1,则 Step 关键词可省略。上述过程循环部分可写成如下方式:
For i = 1 To 10sum = sum + iNext
For Each 循环
For Each
循环用于逐一遍历一个数据集合中的所有元素。数据集合包括数组、Excel 对象集合、字典等。
For Each 循环不需要一个数字变量,但是需要与数据集合中的元素相同的数据类型变量。其基本语法如下:
For Each [元素] In [元素集合]'循环执行的代码Next [元素]
其中,
[元素]
是与集合中的元素相同类型的变量,该变量可在循环代码中使用。[元素集合]
是包括多个元素的集合。
下面看一个实际例子,循环打印出工作簿中所有工作表的名称。
Sub MyCode()Dim sh As Worksheet For Each sh In Worksheets Debug.Print sh.NameNext shEnd Sub
sh
变量就是元素变量,Worksheets
是工作簿中所有工作表的集合。
Exit For 语句
Exit For
语句用于跳出循环过程,一般在提前结束循环时使用,均适用于 For Next
循环和 For Each
循环。
看一个实际的例子,求 1 – 10 数字的和时,当和大于 30 就停止循环。
Sub MyCode()Dim i As IntegerDim sum As Integer For i = 1 To 10 sum = sum + i If sum > 30 ThenExit ForEnd IfNextEnd Sub
在这段代码中,sum
变量大于 30 时,循环就停止。
Do While 循环
Do While
循环用于满足指定条件时循环执行一段代码的情形。循环的指定条件在 While
关键词后书写。
Do While
循环也有两种形式:
Do While … Loop 循环
Do … Loop While 循环
Do While … Loop 循环
Do While … Loop 循环,根据 While 关键词后的条件表达式的值,真时执行,假时停止执行。基本语法如下:
Do While [条件表达式]'循环执行的代码Loop
其中,只要 [条件表达式]
为真,将一直循环执行。[条件表达式]
一旦为假,则停止循环,程序执行 Loop
关键词后的代码。
看一个实际的例子,还是求 1- 10 累积和。
Sub MyCode()Dim i As IntegerDim sum As Integer i = 1Do While i <= 10sum = sum + i i = i + 1LoopEnd Sub
i
变量的初始值是 1,根据 While
后的条件,只要 i
变量小于等于 10,后续的代码就可以一直循环执行。
这里为了演示使用了 Do While
循环,实际情况下,这种求和问题,使用 For
循环更简洁。
Do … Loop While 循环
与上一种 Do 循环不同的是,Do ... Loop While
循环至少循环执行代码一次后,再判断条件表达式的值。基本语法如下:
Do'循环执行的代码Loop While [条件表达式]
其中,While 和条件表达式写在 Loop 关键词后。
Exit Do 语句
与 Exit For
语句类似,Exit Do
语句用于跳出 Do While
循环。
Do Until 循环
Do Until
循环与 Do While
循环类似。不同点在于,Do While
在条件表达式为真时,继续执行循环;而 Do Until
在条件表达式为真时,停止执行循环。
Do Until 循环也有两种形式:
Do Until … Loop 循环
Do … Loop Until 循环
Do Until … Loop 循环
循环开始前判断 Until
后条件表达式的值,如果是真,停止循环;如果是假,继续执行循环。基本语法如下:
Do Until [条件表达式]'循环执行的代码Loop
Do … Loop Until 循环
先运行一次,再判断 Until
后条件表达式的值,如果是真,停止循环;如果是假,继续执行循环。基本语法如下:
Do'循环执行的代码Loop Until [条件表达式]
其他使用方法与 Do While
循环一致。
总结
本篇文章我们学习了 VBA 中程序循环结构基础,以及多种循环结构形式。包括子类在内,VBA 中常使用的循环结构包括 6 种,它们是:
循环结构 | 说明 |
---|---|
For … Next 循环 | 按指定次数循环执行 |
For Each 循环 | 逐一遍历数据集合中的每一个元素 |
Do While … Loop 循环 | 当条件为真时,循环执行 |
Do … Loop While 循环 | 当条件为真时,循环执行。无论条件真假,至少运行一次 |
Do Until … Loop 循环 | 直到条件为真时,停止执行 |
Do … Loop Until 循环 | 直到条件为真时,停止执行。无论条件真假,至少运行一次 |
此外,学习了两种跳出循环的语句,它们是:
跳出语句 | 说明 |
---|---|
Exit For | 跳出 For 循环 |
Exit Do | 跳出 Do While/Until 循环 |