分享

VBA 程序循环结构

 家有仙妻宝宝 2021-10-03

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 循环
转载注明:文章转载自「懒人Excel -
本文标题:VBA 程序循环结构 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多