VBA典型实例:368例 下载本文

For Each…Next循环语句的语法格式如下: For Each 元素 In 对象集合 [语句序列1] [Exit For] [语句序列2] Next

使用For Each循环结构,可在对象集合每个元素中执行一次循环体。如果集合中至少有一个元素,就会进入For Each循环体执行。一旦进入循环,便先针对“对象集合”中第一个元素执行循环中的所有语句。如果“对象集合”中还有其他的元素,则会针对它们执行循环中的语句,当“对象集合”中的所有元素都执行完了,便会退出循环,然后从Next语句之后的语句继续执行。

在循环体中可以放置任意多个Exit For语句,随时退出循环。Exit For经常在条件判断之后使用,例如If…Then,并将控制权转移到紧接在Next之后的语句。

3.编写代码

(1)新建Excel工作簿,按快捷键“Alt+F11”进入VBE环境。 (2)单击菜单“插入/模块”命令向工程中插入一个模块。 (3)在模块中编写以下子过程: Sub 求和() Dim r

Dim t As Long

For Each r In Selection If IsNumeric(r.Value) Then t = t + r.Value End If

Next

MsgBox \所选区域数值之和为:\& t End Sub

(4)返回Excel操作环境,向工作表中插入一个按钮,修改按钮的提示字符为“求和”,为按钮指定执行上步创建的宏“求和”。

(5)在工作表“Sheet1”中输入数据,如图3-29左图所示。

(6)拖动鼠标选中如图3-29左图所示数据区域,单击“求和”按钮,求和结果将显示在如图3-29右图所示对话框中。

图3-29 计算选中区域数值之和

例028 换零钱法(多重循环)

1.案例说明

将十元钱换成1角、2角、5角、1元、2元、5元的零钱若干,求出一共有多少种方法进行计算?

2.关键技术

在VBA中,循环结构内的循环体又可以是循环结构,这种情况称为循环的嵌套。VBA允许在同一过程里嵌套多种类型的循环。

在编写嵌套循环程序的代码时,一定要注意每个循环语句的配对情况。如图3-30所示,其中左图是正确的嵌套关系,第一个Next关闭了内层的For循环,而最后一个Loop关闭了外层的Do循环。同样,在嵌套的If语句中,End If语句自动与最靠近的前一个If语句配对。嵌套的Do…Loop结构的工作方式也是一样的,最内圈的Loop语句与最内圈的Do语句匹配。图3-30右图则是错误的嵌套关系。 语句序列2