



在过程或函数中编写的语句是按照先后顺序执行的,而在实际应用中经常需要一些特殊的执行顺序,如重复、选择等。为此,除了顺序语句外,程序设计语言中还包含另外两种流程控制语句:循环语句与判断语句。
在某些情况下,可能需要重复性地执行一组语句,如给数组元素赋值,此时,可采用循环语句加以简化。循环结构包含两种不同的循环方式:For(计数循环)和Do(当循环)。
1.For循环
通常用于按指定的次数进行循环。常见的有以下的两种:
For...Next
For Each...Next
(1)For...Next
功能描述:通常用于完成指定次数的循环。
语法形式为:
For Counter=Start to End [Step Cou]
...
Next
Counter表示变量;Start表示变量的起始值;End表示结束值;Cou表示相邻值间的跨度,若该参数省略则表示跨度为1。下面用一个示例来演示通过For...Next语句定义数组,并将数组中的元素依次赋值为1,2,3,…,10。操作步骤如下:
按Alt+F11组合键打开VBA编辑器,选择插入“模块1”,在代码编辑窗口中输入图2-11所示代码。
按Ctrl+G组合键打开“立即窗口”,然后按F5键运行代码,即可在“立即窗口”中显示出结果,如图2-12所示。
图2-11
图2-12
(2)For Each...Next
功能描述:通常用于对集合中的每个对象执行重复的任务。
语法形式为:
For Each Object in Objects
...
Next Object
在本语法中,对于指定集合中的每个对象都执行同一个代码段。其中,Object表示对象名,Objects表示集合名。示例如下:
按Alt+F11组合键打开VBA编辑器,选择插入“模块2”,在代码编辑窗口中输入图2-13所示代码。
图2-13
按F5键运行代码,即可弹出显示第1个工作表名称的消息提示框,如图2-14所示。
依次单击“确定”按钮,即可弹出显示其他工作表名称的消息提示框,如图2-15、图2-16所示。
图2-14
图2-15
图2-16
2.Do循环
Do循环比For循环结构更为灵活,该循环依据条件控制过程的流程。在VBA中通常可以看到如下几种Do循环方式:
● Do While...Loop
● Do...Loop While
● Do Until...Loop
● Do...Loop Until
(1)Do While...Loop
功能描述:该结构只有当条件为真时循环才会继续,而条件为假时则直接退出循环。
语法形式为:
Do While Condition
...
Loop
在本语法中,首先判断Condition是否为真,如果为真则执行语句,Loop则表示循环继续;当Condition的值为假时,退出循环。
(2)Do...Loop While
功能描述:该结构功能与Do While...Loop相似,不同之处在于本语句先运行代码,后判断条件是否为真。
语法形式为:
Do
...
Loop While 条件
(3)Do Until...Loop
功能描述:表示条件为假时执行语句,而条件为真时退出运行。
语法形式为:
Do Until <条件>
...
Loop
示例如下:
按Alt+F11组合键打开VBA编辑器,选择插入“模块3”,在代码编辑窗口中输入图2-17所示代码。
按Ctrl+G组合键打开“立即窗口”,然后按F5键运行代码,即可在“立即窗口”中显示结果,如图2-18所示。
图2-17
(4)Do...Loop Until
功能描述:该结构功能与Do Until...Loop相似,不同之处在于本语句先运行代码,后判断条件是否为真。
语法形式为:
Do
...
Loop Until 条件
图2-18
判断语句主要依赖条件值,并根据具体值对程序进行控制。通常的判断语句包括IF语句与Select语句。
1.IF语句
IF语句是程序开发过程中使用频率非常高的语句,程序中的很多判断逻辑都需要用其来实现,如在计算销售奖金时,需要判断输入的数值是否大于指定的销售金额。
语法形式为:
示例如下:
按Alt+F11组合键打开VBA编辑器,选择插入“模块1”,在代码编辑窗口中输入图2-19所示代码。
图2-19
按F5键运行代码,在弹出的消息框中输入成本值,如图2-20所示。
单击“确定”按钮,即可计算出佣金值,如图2-21所示。
图2-20
图2-21
2.Select语句
当条件过多时,利用IF嵌套的方式会非常烦琐,此时就可以借用Select...Case结构方式来实现。该语句首先提供表达式,并列出所有可能的结果,当表达式的结果与列出的值相匹配时,就会执行相应的语句,若不匹配则执行默认语句。
语法形式为:
Select...Case语句不能包含两个相同的条件。
GoTo语句通常用来改变程序执行的顺序,跳过程序的某部分直接去执行另一部分,也可返回已经执行过的某语句使之重复执行。
语法形式为:
GoTo {标号|行号}
GoTo语句是早期Basic语言中常用的一种流程控制语句。但是过量使用GoTo语句会导致程序运行跳转频繁、程序控制和调试难度加大,因此在VB、VBA等程序设计语言中都应尽量避免使用GoTo语句。
在VBA中,GoTo语句主要用于错误处理“On Error GoTo Label”结构。