1、43个典型ExcelVBA实例目录例1.九九乘法表(Print方法的应用)3例2 输入个人信息(Inputbox函数的应用)3例3 退出确认(Msgbox函数的应用)5例4 突出显示不及格学生7例5 从身份证号码中提取性别8例6 评定成绩等级9例7 计算个人所得税11例8 密码验证13例9 求最小公倍数和最大公约数15例10 输出ASCII码表16例11 计算选中区域数值之和17例12 换零钱法(多重循环)18例13 数据排序21例14 彩票幸运号码22例15 用数组填充单元格区域24例16 判断单元格是否包含公式25例17 自动填充公式26例18 锁定和隐藏公式28例19 将单元格公式转换为
2、数值29例20 删除所有公式29例21 用VBA表示数组公式30数据查询31例22 查找指定的值31例23 带格式查找33例24 查找上一个/下一个数据34例25 代码转换36例26 模糊查询37例27 网上查询快件信息38例28 查询基金信息40例29 查询手机所在地41例30 使用字典查询43数据排序45例31 用VBA代码排序45例32 乱序排序46例33 自定义序列排序47例34 多关键字排序49例35 输入数据自动排序50例36 数组排序51例37 使用Small和Large函数排序52例38 使用RANK函数排序54例39 姓名按笔画排序56例40 用VBA进行简单筛选59例41
3、用VBA进行高级筛选61例42 筛选非重复值62例43 取消筛选63:例1.九九乘法表(Print方法的应用)1 案例说明在早期的Basic版本中,程序运行结果主要依靠Print语句输出到终端。在VB中,Print作为窗体的一个方法,用来在窗体中显示信息。但是在VBA中,用户窗体已经不支持Print方法了。在VBA中,Print方法只能向“立即窗口”中输出程序的运行中间结果,供开发人员调试程序时使用。本例使用Print方法在立即窗口中输入九九乘法表。2 关键技术在VBA中,Print方法只能应用于Debug对象,其语法格式如下:Debug.Print outputlist参数outputlis
4、t是要打印的表达式或表达式的列表。如果省略,则打印一个空白行。 Print首先计算表达式的值,然后输出计算的结果。在outputlist参数中还可以使用分隔符,以格式化输出的数据。格式化分隔符有以下几种: Spc(n):插入n个空格到输出数据之间; Tab(n):移动光标到适当位置,n为移动的列数; 分号:表示前后两个数据项连在一起输出; 逗号:以14个字符为一个输出区,每个数据输出到对应的输出区。3编写代码(1)在VBE中,单击菜单“插入/模块”命令插入一个模块。(2)在模块中输入以下代码:Sub multi() For i = 1 To 9 For j = 1 To i Debug.Pri
5、nt i; x; j; =; i * j; ; Next Debug.Print NextEnd Sub(3)按功能键“F5”运行子过程,在“立即窗口”输出九九乘法表,如图3-1所示。例2 输入个人信息(Inputbox函数的应用)1案例说明本例演示Inputbox函数的使用方法。执行程序,将弹出“输入个人信息”对话框,要求用户输入“姓名、年龄、地址”信息,然后在“立即窗口”中将这些信息打印输出。2关键技术为了实现数据输入,VBA提供了InputBox函数。该函数将打开一个对话框作为输入数据的界面,等待用户输入数据,并返回所输入的内容。其语法格式如下:InputBox(prompt, titl
6、e , default , xpos , ypos , helpfile, context) 各参数的含义如下: Prompt:为对话框消息出现的字符串表达式。其最大长度为1024个字符。如果需要在对话框中显示多行数据,则可在各行之间用回车符换行符来分隔,一般使用VBA的常数vbCrLf代表回车换行符。 Title:为对话框标题栏中的字符串。如果省略该参数,则把应用程序名放入标题栏中。 Default:为显示在文本框中的字符串。如果省略该参数,则文本框为空。 Xpos:应和Ypos成对出现,指定对话框的左边与屏幕左边的水平距离。如果省略该参数,则对话框会在水平方向居中。 Ypos:应和Xpos
7、成对出现,指定对话框的上边与屏幕上边的距离。如果省略该参数,则对话框被放置在屏幕垂直方向距下边大约三分之一的位置。 Helpfile:设置对话框的帮助文件,可省略。 Context:设置对话框的帮助主题编号,可省略。3编写代码(1)在VBE中,单击菜单“插入/模块”命令插入一个模块。(2)在模块中输入以下代码:Sub inputinfo() Title = 输入个人信息 name1 = 请输入姓名: age1 = 请输入年龄: address1 = 请输入地址: strName = InputBox(name1, Title) age = InputBox(age1, Title) Addre
8、ss = InputBox(addres1, Title) Debug.Print 姓名:; strName Debug.Print 年龄:; age Debug.Print 地址:; AddressEnd Sub(3)按功能键“F5”运行子过程,将弹出“输入个人信息”窗口。在对话框中输入内容后按“回车”,或单击“确定”按钮。(4)接着输入“年龄”和“地址”信息,在“立即窗口”中将输出这些内容。例3 退出确认(Msgbox函数的应用)1案例说明在应用程序中,有时用户会由于误操作关闭Excel,为了防止这种情况,可在退出Excel之前弹出对话框,让用户确认是否真的要关闭Excel。本例使用Msg
9、box函数弹出对话框,让用户选择是否退出系统。2关键技术使用MsgBox函数可打开一个对话框,在对话框中显示一个提示信息,并让用户单击对话框中的按钮,使程序继续执行。MsgBox函数语法格式如下:Value=MsgBox(prompt,buttons,title ,helpfile,context)通过函数返回值可获得用户单击的按钮,并可根据按钮的不同而选择不同的程序段来执行。该函数共有5个参数,除第1个参数外,其余参数都可省略。各参数的意义与Inputbox函数参数的意义基本相同,不同的地方是多了一个buttons参数,用来指定显示按钮的数目及形式、使用提示图标样式、默认按钮以及消息框的强制
10、响应等。其常数值如表3-1所示。表3-1 按钮常数值常 量值说 明vbOkOnly0只显示“确定”(Ok)按钮vbOkCancel1显示“确定”(Ok)及“取消”(Cancel)按钮vbAbortRetryIgnore2显示“异常终止”(Abort)、“重试”(Retry)及“忽略”(Ignore)按钮vbYesNoCancel3显示“是”(Yes)、“否”(No)及“取消”(Cancel)按钮续表 常 量值说 明vbYesNo4显示“是”(Yes)及“否”(No)按钮vbRetryCancel5显示“重试”(Retry)及“取消”(Cancel)按钮vbCritical16显示Critica
11、l Message图标vbQuestion32显示Warning Query图标vbExclamation48显示Warning Message图标vbInformation64显示Information Message图标vbDefaultButton10以第一个按钮为默认按钮vbDefaultButton2256以第二个按钮为默认按钮vbDefaultButton3512以第三个按钮为默认按钮vbDefaultButton4768以第四个按钮为默认按钮vbApplicationModal0进入该消息框,当前应用程序暂停vbSystemModal4096进入该消息框,所有应用程序暂停表3-1
12、中的数值(或常数)可分为四组,其作用分别为: 第一组值(05)用来决定对话框中按钮的类型与数量。 第二组值(16,32,48,64)用来决定对话框中显示的图标。 第三组值(0,256,512)设置对话框的默认活动按钮。活动按钮中文字的周转有虚线,按回车键可执行该按钮的单击事件代码。 第四组值(0,4096)决定消息框的强制响应性。buttons参数可由上面4组数值组成,其组成原则是:从每一类中选择一个值,把这几个值累加在一起就是buttons参数的值(大部分时间里都只使用前三组数值的组合),不同的组合可得到不同的结果。3编写代码(1)在VBE中,双击“工程”子窗口中的“ThisWorkbook
13、”打开代码窗口,如图3-4所示。(2)在代码窗口左上方的对象列表中选择“Workbook”,如图3-5所示。(3)在代码窗口右上方的事件列表中选择“BeforeClose”,如图3-6所示。代码窗口中将自动生成事件过程结构如下:Private Sub Workbook_BeforeClose(Cancel As Boolean)End Sub(4)在上面生成的事件过程中输入以下代码:Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim intReturn As Integer intReturn = MsgBox(真的退出系统吗?, v
14、bYesNo + vbQuestion, 提示) If intReturn vbYes Then Cancel = TrueEnd Sub(5)保存Excel工作簿。(6)关闭Excel工作簿。分支结构,又叫选择结构。这种结构的程序将根据给定的条件来决定执行哪一部分代码,而跳过其他代码。例4 突出显示不及格学生1案例说明本例判断学生成绩表中的成绩,如果成绩不及格(低于60分),则将该成绩着重显示出来。2关键技术在本例中,需要进行一个判断(成绩是否低于60分),这时可使用IfThen语句。用IfThen语句可有条件地执行一个或多个语句。其语法格式如下:If 逻辑表达式 Then 语句1 语句1
15、语句nEnd If逻辑表达式也可以是任何计算数值的表达式,VBA将为零(0)的数值看做False,而任何非零数值都被看做True。该语句的功能为:若逻辑表达式的值是True,则执行位于Then与End If之间的语句;若逻辑表达式的值是False,则不执行Then与End If之间的语句,而执行End If后面的语句。其流程图如图3-9所示。IfThen结构还有一种更简单的形式:单行结构条件语句。其语法格式如下:If 逻辑表达式 Then 语句该语句的功能为:若逻辑表达式的值是True,则执行Then后的语句;若逻辑表达式的值是False,则不执行Then后的语句,而执行下一条语句。3编写代码
16、(1)打开“学生成绩表”。(2)按快捷键“Alt+F11”进入VBE环境。(3)单击菜单“插入/模块”命令向工程中插入一个模块,并编写以下代码:Sub 显示不及格学生() Dim i As Integer For i = 3 To 11 If Sheets(1).Cells(i, 2).Value 60 Then Sheets(1).Cells(i, 2).Select Selection.Font.FontStyle = 加粗 Selection.Font.ColorIndex = 3 End If NextEnd Sub(4)关闭VBE开发环境返回Excel。(5)在功能区“开发工具”选项
17、卡的“控件”组中,单击“插入”按钮弹出“表单控件”面板。(6)在“表单控件”面板中单击“按钮”,拖动鼠标在工作表中绘制一个按钮。当松开鼠标时,将弹出“指定宏”对话框。(7)在“指定宏”对话框中,单击选中“显示不及格学生”宏,单击“确定”按钮。(8)右击工作表中的按钮,弹出快捷菜单如图3-12所示,单击“编辑文字”菜单,修改按钮中的提示文字为“显示不及格学生”。(9)单击“显示不及格学生”按钮,执行宏代码,成绩表中不及格成绩将突出显示为粗体、红色。例5 从身份证号码中提取性别1案例说明在很多信息系统中都需要使用到身份证号码,身份证号码中包含有很多信息,如可从其中提取性别。我国现行使用的身份证号码
18、有两种编码规则,即15位居民身份证和18位居民身份证。15位的身份证号的编码规则。dddddd yymmdd xx p18位的身份证号的编码规则。dddddd yyyymmdd xx p y其中: dddddd为地址码(省地县三级)18位中的和15位中的不完全相同。 yyyymmdd yymmdd 为出生年月日。 xx序号类编码。 p性别。 18位中末尾的y为校验码。2关键技术在IfThen语句中,条件不成立时不执行任何语句。在很多时候需要根据条件是否成立分别执行两段不同的代码,这时可用IfThenElse语句,其语法格式如下:If 逻辑表达式 Then 语句序列1 Else 语句序列2End
19、 IfVBA判断“逻辑表达式”的值,如果它为True,将执行“语句序列1”中的各条语句,当“逻辑表达式”的值为False时,就执行“语句序列2”中的各条语句。其流程图如图3-14所示。3编写代码(1)新建Excel工作簿,在VBE中插入一个模块。(2)在模块中编写以下代码:Sub 根据身份证号码确定性别() sid = InputBox(请输入身份证号码:) i = Len(sid) If i 15 And i 18 Then 判断身份证号长度是否正确 MsgBox 身份证号码只能为15位或18位! Exit Sub End If If i = 15 Then 长度为15位 s = Right
20、(sid, 1) 取最右侧的数字 Else 长度为18度 s = Mid(sid, 17, 1) 取倒数第2位数 End If If Int(s / 2) = s / 2 Then 为偶数 sex = 女 Else sex = 男 End If MsgBox 性别: + sexEnd Sub(3)切换到Excel环境,添加一个按钮“从身份证号码提取性别”,并指定执行上步创建的宏。(4)单击“从身份证号码提取性别”按钮。(5)输入身份证号码后单击“确定”按钮。例6 评定成绩等级1案例说明本例将成绩表中的百分制成绩按一定规则划分为A、B、C、D、E五个等级。其中各等级对应的成绩分别为: A:大于等
21、于90分; B:大于等于80分,小于90分; C:大于等于70分,小于80分; D:大于等于60分,小于70分; E:小于60分。2关键技术本例共有五个分支,使用IfThenElse这种二路分支结构也可完成,但需要复杂的嵌套结构才能解决该问题。其实VBA中提供了一种IfThenElseIf的多分支结构,其语法格式如下:If 逻辑表达式1 Then 语句序列1ElseIf 逻辑表达式2 Then 语句序列2.ElseIf 逻辑表达式3 Then 语句序列3 . Else 语句序列nEnd If在以上结构中,可以包括任意数量的ElseIf子句和条件,ElseIf子句总是出现在Else子句之前。VB
22、A首先判断“逻辑表达式1”的值。如果它为False,再判断“逻辑表达式2”的值,依此类推,当找到一个为True的条件,就会执行相应的语句块,然后执行End If后面的代码。如果所有“逻辑表达式”都为False,且包含Else语句块,则执行Else语句块。3编写代码(1)在Excel中打开成绩表。(2)按快捷键“Alt+F11”进入VBE开发环境。(3)单击“插入/模块”命令向工程中插入一个模块,并编写以下VBA代码:Sub 评定等级() Dim i As Integer For i = 3 To 11 t = Sheets(1).Cells(i, 2).Value 取得成绩 If t = 90
23、 Then j = A ElseIf t = 80 Then j = B ElseIf t = 70 Then j = C ElseIf t = 60 Then j = D Else j = E End If Sheets(1).Cells(i, 3) = j NextEnd Sub(4)返回Excel操作界面,在成绩表旁边增加一个按钮,并指定执行宏“评定等级”。(5)单击“评定等级”按钮,即可在成绩表的C列显示出各成绩对应的等级,如图3-17所示。例7 计算个人所得税1案例说明在工资管理系统中,需要计算员工应缴纳的个人所得税。个人所得税税额按5%至45%的九级超额累进税率计算应缴税额。个人所
24、得税的计算公式为:应纳个人所得税税额=应纳税所得额适用税率-速算扣除数本例根据工资表中的相应数据计算出纳税额,并填充在工资表对应的列中。2关键技术本例中计算个人所得税时共有九个分支。这时可在IfThenElseIf结构中添加多个ElseIf块来进行各分支的处理。对于多分支结构,可使用Select Case语句。Select Case语句的功能与IfThenElse语句类似,但在多分支结构中,使用Select Case语句可使代码简洁易读。Select Case结构的语法格式如下:Select Case 测试表达式Case 表达式列表1 语句序列1Case 表达式列表2 语句序列2 Case E
25、lse 语句序列nEnd Select在以上结构中,首先计算出“测试表达式”的值,然后,VBA将表达式的值与结构中的每个Case的值进行比较。如果相等,就执行与该Case语句下面的语句块,执行完毕再跳转到End Select语句后执行。其流程图如图3-20所示。在Select Case结构中,“测试表达式”通常是一个数值型或字符型的变量。“表达式列表”可以是一个或几个值的列表。如果在一个列表中有多个值,需要用逗号将各值分隔开。表达式列表可以按以下几种情况进行书写: 表达式:表示一些具体的取值。例如:Case 10,15,25。 表达式A To 表达式B:表示一个数据范围。例如,Case 7 T
26、o 17表示717之间的值。 Is 比较运算符表达式:表示一个范围。例如,Case Is60 表示所有大于90的值。 以上三种情况的混合。例如,Case 4 To 10, 15, Is20。3编写代码(1)在Excel中打开工资表工作簿。(2)按快捷键“Alt+F11”进入VBE开发环境。(3)单击菜单“插入/模块”命令插入一个模块。(4)在模块中编写以下函数,用来计算所得税:Function 个人所得税(curP As Currency) Dim curT As Currency curP = curP 1600 1600为扣除数 If curP 0 Then Select Case cur
27、P Case Is = 500 curT = curP * 0.05 Case Is = 2000 curT = (curP - 500) * 0.1 + 25 Case Is = 5000 curT = (curP - 2000) * 0.15 + 125 Case Is = 20000 curT = (curP - 5000) * 0.2 + 375 Case Is = 40000 curT = (curP - 20000) * 0.25 + 1375 Case Is 60000 curT = (curP - 40000) * 0.3 + 3375 Case Is 80000 curT =
28、 (curP - 60000) * 0.35 + 6375 Case Is 100000 curT = (curP - 80000) * 0.4 + 10375 Case Else curT = (curP - 100000) * 0.45 + 15375 End Select 个人所得税 = curT Else 个人所得税 = 0 End IfEnd Function(5)在模块中编写“计算”子过程,计算工资表中每个员工应缴所得税额,并填写在对应的列中。Sub 计算() For i = 4 To 9 Sheets(1).Cells(i, 8).Value = 个人所得税(Sheets(1).
29、Cells(i, 6).Value) NextEnd Sub(6)返回到Excel环境中,在工资表下方插入一个按钮,为按钮指定宏为“计算”。(7)单击“计算”按钮,可计算出每个员工的所得税额。在实际开发的应用系统中,经常需要重复执行一条或多条语句。这种结构称为循环结构。循环结构的思想是利用计算机高速处理运算的特性,重复执行某一部分代码,以完成大量有规则的重复性运算。VBA提供了多个循环结构控制语句:DoLoop结构、WhileWend结构、ForNext结构、For EachNext结构。例8 密码验证1案例说明在信息管理系统中,很多时候都需要用户进行登录操作。在登录操作时要求用户输入密码,一
30、般都要给用户三次机会,每次的输入过程和判断过程都相同。本例使用DoLoop循环完成密码验证过程。2关键技术在VBA中,最常用的循环语句是DoLoop循环。循环结构Do WhileLoop的语法格式如下:Do While 逻辑表达式 语句序列1 Exit Do 语句序列2Loop其中Do While和Loop为关键字,在Do While和Loop之间的语句称为循环体。当VBA执行这个Do循环时,首先判断“逻辑表达式”的值,如果为False(或零),则跳过所有语句,执行Loop的下一条语句,如果为True(或非零),则执行循环体,当执行到Loop语句后,又跳回到Do While语句再次判断条件。在
31、循环体中如果包含有Exit Do语句,当执行到Exit Do语句,马上跳出循环,执行Loop的下一条语句。其流程图如图3-22所示。 Do WhileLoop流程图VBA的DoLoop循环有4种结构,分别如下: Do WhileLoop循环:先测试条件,如果条件成立则执行循环体。 DoLoop While循环:先执行一遍循环体,再测试循环条件,如果条件成立则执行循环体。 Do UntilLoop循环:先测试条件,如果条件不成立则执行循环体。 DoLoop Until循环:先执行一遍循环体,再测试循环条件,如果条件不成立则执行循环体。3编写代码(1)新建Excel工作簿,按快捷键“Alt+F11
32、”进入VBE开发环境。(2)单击菜单“插入/模块”命令向工程中插入一个模块。(3)在模块中编写以下VBA代码:Sub login() Dim strPassword As String 保存密码 Dim i As Integer 输入密码的次数 Do strPassword = InputBox(请输入密码) 输入密码 If strPassword = test Then 判断密码是否正确 Exit Do 退出循环 Else MsgBox (请输入正确的密码!) End If i = i + 1 Loop While i = 3 Then 超过正常输入密码次数 MsgBox 非法用户,系统将退
33、出! Application.Quit Else MsgBox 欢迎你使用本系统! End IfEnd Sub(4)返回Excel操作界面,在工作表中插入一个按钮,设置提示文字为“密码验证”,并为该按钮指定执行的宏为“login”。(5)单击“密码验证”按钮,弹出对话框,输入密码后单击“确定”按钮进行密码的验证。例9 求最小公倍数和最大公约数1案例说明几个数公有的倍数叫做这几个数的公倍数,其中最小的一个叫做这几个数的最小公倍数。如12、18、20这三个数的最小公倍数为180。最大公约数是指某几个整数的共有公约数中最大的那个数。如2、4、6这三个数的最大公约数为2。本例使用辗转相除法求两个自然数
34、m、n的最大公约数和最小公倍数。2关键技术本例首先求出两数m、n的最大公约数,再将m、n数的乘积除以最大公约数,即可得到最小公倍数。本例使用DoLoop循环,并且没有设置循环条件。一般情况下,这种循环是一个死循环(也就是说程序将一直循环下去),因此,在这种循环结构中必须添加一个判断语句,当达到指定的条件时退出循环。如本例中使用以下语句退出循环:If r = 0 Then Exit Do3编写代码(1)新建Excel工作簿,按快捷键“Alt+F11”进入VBE环境。(2)单击菜单“插入/模块”命令向工程中插入一个模块。(3)在模块中编写以下子过程:Sub 最小公倍数和最大公约数() Dim m
35、As Integer, n As Integer Dim m1 As Integer, n1 As Integer Dim t As Integer m = InputBox(输入自然数m:) n = InputBox(输入自然数n:) m1 = m n1 = n If m1 n1 Then m1 = n n1 = m 交换m和n的值 End If Do r = m1 Mod n1 If r = 0 Then Exit Do m1 = n1 n1 = r Loop str1 = m & , & n & 的最大公约数= & n1 & vbCrLf str1 = str1 & 最小公倍数= & m
36、 * n / n1 MsgBox str1End Sub(4)返回Excel操作环境,向工作表中插入一个按钮,为按钮指定执行上步创建的宏。(5)单击按钮,弹出输入提示框,分别输入两个数后,得到结果。 例10 输出ASCII码表1案例说明目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码。ASCII码由8位二进制组成,一共可包含256个符号。本例使用循环语句输出ASCII中的可见字符。2关键技术使用DoLoop循环时,可以不知道循环的具体次数。如果知道循环的次数,可以使用ForNext循环语句来执行循环。For循环的语法如下:For 循环变量=初始值 To
37、终值 Step 步长值 语句序列1 Exit For 语句序列2Next 循环变量在For循环中使用循环变量来控制循环,每重复一次循环之后,循环变量的值将与步长值相加。步长值可正可负,如果步长值为正,则初始值必须小于等于终值,才执行循环体,否则退出循环。如果步长值为负,则初始值必须大于等于终值,这样才能执行循环体。如果没有设置Step,则步长值默认为1。ForNext循环结构的流程图如图3-28所示。For循环一般都可计算出循环体的执行次数,计算公式如下:循环次数=(终值-初值)/步长值+1这里用中括号表示取整。在事先不知道循环体需要执行多少次时,应该用Do循环。而在知道循环体要执行的次数时,
38、最好使用ForNext循环。3编写代码(1)新建Excel工作簿,按快捷键“Alt+F11”进入VBE环境。(2)单击菜单“插入/模块”命令向工程中插入一个模块。(3)在模块中编写以下子过程:Sub ascii() Dim a As Integer, i As Integer i = 3 For a = 32 To 126 Sheets(1).Cells(i, 1) = a Sheets(1).Cells(i, 2) = Chr(a) i = i + 1 NextEnd Sub(4)返回Excel操作环境,向工作表中插入一个按钮,为按钮指定执行上步创建的宏。(5)单击按钮,得到结果。例11 计
39、算选中区域数值之和1案例说明在某些情况下,需要统计工作表中选定区域数值单元格的数值之和(例如,临时查看应发奖金之和),在Excel的状态栏就可查看选中单元格的数值之和。本例编写VBA代码,使用循环结构来完成该项功能。2关键技术用户在Excel工作表中选定单元格的数量是不固定的,若需统计所选单元格数值之和,这时可使用For Each循环来进行处理,对选中区域的每个单元格进行判断,然后再累加数值单元格的值。For EachNext循环语句的语法格式如下:For Each 元素 In 对象集合 语句序列1 Exit For 语句序列2Next使用For Each循环结构,可在对象集合每个元素中执行一
40、次循环体。如果集合中至少有一个元素,就会进入For Each循环体执行。一旦进入循环,便先针对“对象集合”中第一个元素执行循环中的所有语句。如果“对象集合”中还有其他的元素,则会针对它们执行循环中的语句,当“对象集合”中的所有元素都执行完了,便会退出循环,然后从Next语句之后的语句继续执行。在循环体中可以放置任意多个Exit For语句,随时退出循环。Exit For经常在条件判断之后使用,例如IfThen,并将控制权转移到紧接在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 所选区域数值之和为: & tEnd Sub(4)返回Excel操作环境,向工作表中插入一个按钮,修改按钮的提示字符为“求和”,为按钮指定执行上步创建的宏“求和”。(5)在工作表“Sheet1”中输入数据。(6)拖动鼠标选中数据区域,单击“求和”按钮,求和结果将显示在话框中。例12 换零钱法(多重循环)