《Excel的使用第10章.ppt》由会员分享,可在线阅读,更多相关《Excel的使用第10章.ppt(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、前言前言n n若想使那些枯燥反复的工作变得高效、准确而自动化,请认真学习本章的内容。n n若想建立自已的办公自动化数据管理系统,请认真学习本章的内容。n n若想成为一个真正的Excel专家,不但要学习本章的内容,而且还不够!本章本章学习目标学习目标1 1 1 1、了解、了解、了解、了解ExcelExcelExcelExcel宏的基本知识宏的基本知识宏的基本知识宏的基本知识2 2 2 2、掌握宏的录制、编写和运行方法、掌握宏的录制、编写和运行方法、掌握宏的录制、编写和运行方法、掌握宏的录制、编写和运行方法3 3 3 3、了解、了解、了解、了解VBAVBAVBAVBA程序的基本知识程序的基本知识程
2、序的基本知识程序的基本知识4 4 4 4、掌握、掌握、掌握、掌握VBAVBAVBAVBA的基本数据类型的基本数据类型的基本数据类型的基本数据类型5 5 5 5、掌握、掌握、掌握、掌握VBAVBAVBAVBA宏与函数的编写和调用方法宏与函数的编写和调用方法宏与函数的编写和调用方法宏与函数的编写和调用方法6 6 6 6、掌握、掌握、掌握、掌握VBAVBAVBAVBA条件、循环程序的设计方法条件、循环程序的设计方法条件、循环程序的设计方法条件、循环程序的设计方法7 7 7 7、掌握、掌握、掌握、掌握VBAVBAVBAVBA窗体的设计方法窗体的设计方法窗体的设计方法窗体的设计方法8 8 8 8、掌握、
3、掌握、掌握、掌握VBAVBAVBAVBA的对话框和菜单程序的设计方法的对话框和菜单程序的设计方法的对话框和菜单程序的设计方法的对话框和菜单程序的设计方法9 9 9 9、了解用、了解用、了解用、了解用VBAVBAVBAVBA和和和和EXCELEXCELEXCELEXCEL相结合开发应用程序的方法相结合开发应用程序的方法相结合开发应用程序的方法相结合开发应用程序的方法10.1 Excel宏1.1.宏的概念宏的概念宏的概念宏的概念n n宏宏宏宏是是是是用用用用户户户户用用用用VBAVBA程程程程序序序序设设设设计计计计语语语语言言言言编编编编写写写写或或或或录录录录制制制制的的的的程程程程序序序序,
4、其其其其中中中中保保保保存存存存有有有有一一一一系系系系列列列列Excel Excel 的的的的命命命命令令令令,可可可可以以以以被被被被多多多多次次次次重重重重复复复复使使使使用用用用。宏宏宏宏可可可可以以以以自动执行复杂的任务,减少完成任务所需的步骤。自动执行复杂的任务,减少完成任务所需的步骤。自动执行复杂的任务,减少完成任务所需的步骤。自动执行复杂的任务,减少完成任务所需的步骤。n nVBAVBA即即即即 Visual Visual Basic Basic for for ApplicationsApplications,它它它它 是是是是 Visual Visual BasicBasi
5、c的的的的一一一一个个个个派派派派生生生生体体体体,它它它它有有有有针针针针对对对对性性性性地地地地对对对对Visual Visual BasicBasic进进进进行行行行了了了了优优优优化化化化和和和和设设设设置置置置。两两两两者者者者的的的的主主主主要要要要区区区区别别别别在在在在于于于于:Visual Visual BasicBasic开开开开发发发发的的的的应应应应用用用用程程程程序序序序可可可可以以以以独独独独立立立立在在在在WindowsWindows系系系系统统统统中中中中运运运运行行行行,而而而而用用用用VBAVBA开发的程序只能在提供它的应用程序中运行。开发的程序只能在提供它
6、的应用程序中运行。开发的程序只能在提供它的应用程序中运行。开发的程序只能在提供它的应用程序中运行。n n在在在在ExcelExcel中中中中,可可可可以以以以用用用用ExcelExcel提提提提供供供供的的的的宏宏宏宏录录录录制制制制工工工工具具具具录录录录制制制制宏宏宏宏程程程程序序序序,也可以使用它提供的也可以使用它提供的也可以使用它提供的也可以使用它提供的“Visual Basic Visual Basic 编辑器编辑器编辑器编辑器”直接编写宏。直接编写宏。直接编写宏。直接编写宏。10.1 Excel宏n n2、录制宏 n n宏宏录录制制器器是是ExcelExcel提提供供的的一一种种软
7、软件件工工具具,它它能能够够将将用用户户的的操操作作过过程程记记录录下下来来,并并自自动动将将所所记记录录的的操操作作转换成为转换成为VBAVBA程序代码。程序代码。n n对对于于经经常常重重复复进进行行的的操操作作过过程程,可可以以通通过过宏宏录录制制器器将将它它记记录录下下来来,当当需需要要再再次次进进行行这这些些操操作作时时,只只需需要要运运行行录录制制的的宏宏,ExcelExcel就就能能自自动动完完成成这这些些重重复复的的操作。操作。n n说说明明:当当录录制制宏宏的的工工作作开开始始后后,所所有有的的操操作作步步骤骤都都将将被被记记录录在在宏宏中中,所所以以应应尽尽量量减减少少不不
8、必必要要的的或或错错误误的的操操作作,如如果果在在录录制制宏宏时时出出现现失失误误,更更正正失失误误的的操操作也会记录在宏中。作也会记录在宏中。10.1 Excel宏n n录制宏的案例n n建建立立1010班班的的学学生生档档案案表表,档档案案表表的的结结构构如如下下图图所所示示。录制一个能够建立这种档案表结构的宏。录制一个能够建立这种档案表结构的宏。10.1 Excel宏n n建立学生档案宏1.1.选选择择“工工具具”|“|“宏宏”|“|“录录制制新新宏宏”菜菜单单项项,在在弹出的下示对话框中输入宏名字弹出的下示对话框中输入宏名字“学生档案学生档案”2.2.单击单击“确定确定”10.1 Ex
9、cel宏n n3.3.输入表格内容输入表格内容(1 1)单击)单击A1A1单元格,在其中输入单元格,在其中输入“20012001级学生档案级学生档案”。(2 2)单击)单击A2A2单元格,在其中输入单元格,在其中输入“学号学号”。(3 3)单击)单击B2B2单元格,在其中输入单元格,在其中输入“姓名姓名”。(4 4)单击)单击C2C2单元格,在其中输入单元格,在其中输入“班级班级”。(5 5)单击)单击D2D2单元格,在其中输入单元格,在其中输入“性别性别”。(6 6)单击)单击E2E2单元格,在其中输入单元格,在其中输入“籍贯籍贯”。(7 7)单击)单击F2F2单元格,在其中输入单元格,在其
10、中输入“寝室寝室”。(8 8)单击)单击G2G2单元格,在其中输入单元格,在其中输入“电话号码电话号码”。(9 9)选选择择A1:G1A1:G1单单元元格格区区域域,然然后后单单击击工工具具条条中中的的跨跨列列居居中按钮。中按钮。(1010)单击)单击“停止停止”记录制工具条中的停止按钮。记录制工具条中的停止按钮。(1111)保存该工作簿为)保存该工作簿为“学籍档案学籍档案.xls”.xls”。10.1 Excel宏n n4.4.停止录制,查看录制的宏停止录制,查看录制的宏n n选择选择“工具工具”|“|“宏宏”|“|“停止录制停止录制”n n选选择择“工工具具”|“|“宏宏”|“|“宏宏”菜
11、菜单单项项,会会显显示示“宏宏”对对话框。选中其中的话框。选中其中的“学生档案学生档案”,单击,单击“编辑编辑”。10.1 Excel宏n n宏代码宏代码宏代码宏代码n n1 1Sub Sub 学生档案学生档案学生档案学生档案()()n n2 2 学生档案学生档案学生档案学生档案 MacroMacron n3 3 宏由宏由宏由宏由 dk dk 录制,时间录制,时间录制,时间录制,时间:2004-7-18:2004-7-18n n4 4 快捷键快捷键快捷键快捷键:Ctrl+s:Ctrl+sn n5 5Range(A1).SelectRange(A1).Selectn n6 6ActiveCell
12、.FormulaR1C1=2001ActiveCell.FormulaR1C1=2001级一班学生档案级一班学生档案级一班学生档案级一班学生档案 n n7 7Range(A2).SelectRange(A2).Selectn n8 8ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=学号学号学号学号 n n9 9Range(B2).SelectRange(B2).Selectn n1010ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=姓名姓名姓名姓名 n n1111Range(C2).SelectRange
13、(C2).Selectn n1212ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=班级班级班级班级 n n1313Range(D2).SelectRange(D2).Selectn n1414ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=性别性别性别性别 n n1515Range(E2).SelectRange(E2).Selectn n1616ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=籍贯籍贯籍贯籍贯 n n1717Range(F2).SelectRa
14、nge(F2).Selectn n1818ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=寝室寝室寝室寝室 10.1 Excel宏n n1919Range(G2).SelectRange(G2).Selectn n2020ActiveCell.FormulaR1C1=ActiveCell.FormulaR1C1=电话号码电话号码 n n2121Range(A1:G1).SelectRange(A1:G1).Selectn n2222 With SelectionWith Selectionn n2323.HorizontalAlignment=xlC
15、enter.HorizontalAlignment=xlCentern n2424.VerticalAlignment=xlBottom.VerticalAlignment=xlBottomn n2525.WrapText=False.WrapText=Falsen n2626.Orientation=0.Orientation=0n n2727.AddIndent=False.AddIndent=Falsen n2828.ShrinkToFit=False.ShrinkToFit=Falsen n2929End WithEnd Withn n3030 Selection.MergeSelec
16、tion.Mergen n3131End SubEnd Sub10.1 Excel宏5、宏的结构Sub Sub 宏名宏名()()命令代码命令代码1 1 命令代码命令代码2 2 End SubEnd Sub6、With的结构With SelectionWith Selection End WithEnd With10.1 Excel宏n n7、宏的保存n n保存在个人宏工作簿“Personal.xls”中。n n保存在专门保存宏的“新的工作簿”中。n n 保存在建立宏的当前工作薄中。10.1 Excel宏n n8、宏的执行n n通过快捷键运行宏通过快捷键运行宏n n通过对话框运行宏通过对话框运行
17、宏n n通过自定义工具按钮运行宏通过自定义工具按钮运行宏n n通过图形控件或窗体命令按钮运行宏通过图形控件或窗体命令按钮运行宏n n通过自定义菜单运行宏(以后再讲)通过自定义菜单运行宏(以后再讲)10.2 VBA程序设计基础n n1、数据类型的概念、数据类型的概念n n在在在在计计计计算算算算机机机机中中中中,数数数数据据据据也也也也是是是是按按按按不不不不同同同同的的的的类类类类别别别别进进进进行行行行运运运运算算算算和和和和保保保保存存存存的的的的,人人人人们们们们称称称称之之之之为为为为数数数数据据据据类类类类型型型型。同同同同种种种种类类类类型型型型的的的的数数数数据据据据占占占占用用
18、用用相相相相同同同同大大大大小小小小的的的的存存存存储储储储空空空空间间间间,相相相相互互互互之之之之间间间间可可可可以以以以进进进进行行行行计计计计算算算算、比比比比较较较较或或或或赋赋赋赋值值值值等等等等操操操操作作作作;不不不不同同同同类类类类型型型型的的的的数数数数据据据据占占占占用用用用的的的的存存存存储储储储空空空空间间间间大大大大小小小小不不不不一一一一定定定定相相相相同同同同,且且且且相相相相互互互互之之之之间间间间不不不不能能能能进进进进行行行行计计计计算算算算和和和和比比比比较较较较等操作等操作等操作等操作 。n n2、VBA的数据类型的数据类型(1 1)常量)常量)常量)
19、常量 n n数值常量数值常量数值常量数值常量 ,如:,如:1 1,2 2,6565,98.6598.65等等10.2 VBA程序设计基础n n字符及字符串常量字符及字符串常量字符及字符串常量字符及字符串常量 n n字字符符类类型型的的常常量量称称为为字字符符常常量量,字字符符常常量量要要用用定定界界符符双双引号(引号(“”“”)界定。例如,)界定。例如,“d”“d”、“5”“5”、“A”“A”等都是字符常量。等都是字符常量。n n符号常量符号常量符号常量符号常量 n nConst Const 常量名常量名=常量值常量值n n例如,例如,Const PI=3.14Const PI=3.14,Co
20、nst ABC=OK!China!Const ABC=OK!China!10.2 VBA程序设计基础n n(2)变量n n变量是在程序运行期间其值可以发生变化的数据。变量是在程序运行期间其值可以发生变化的数据。n n例如:例如:1 Dim A,B As Integer2 A=13 B=24 A=4+b5A=3A在本程序段中有在本程序段中有3个不同的值,这就是变!个不同的值,这就是变!10.2 VBA程序设计基础n nVBAVBA数值数据类型数值数据类型 数据类型数据类型数据类型数据类型存储空间存储空间存储空间存储空间数数数数 据据据据 范范范范 围围围围ByteByte1 1 字节字节字节字节
21、02550255BooleanBoolean2 2字节字节字节字节True True 或或或或 falsefalseInteger Integer 2 2 字节字节字节字节-32 76832 767-32 76832 767LongLong4 4 字节字节字节字节-2 147 483 6482 147 483 647-2 147 483 6482 147 483 647SingleSingle4 4 字节字节字节字节负数:负数:负数:负数:-3.402823E38-1.401298E-45-3.402823E38-1.401298E-45正数:正数:正数:正数:1.401298E-453.40
22、2823E381.401298E-453.402823E38DoubleDouble8 8 字节字节字节字节负数:负数:负数:负数:1.79769313486232E308-4.94065645841247E-3241.79769313486232E308-4.94065645841247E-324正数:正数:正数:正数:4.94065645841247E-3241.79769313486232E3084.94065645841247E-3241.79769313486232E308CurrencyCurrency8 8 字节字节字节字节-922337203685477.58089223372
23、03685477.5807-922337203685477.5808922337203685477.5807DateDate8 8字节字节字节字节01000100年年年年1 1月月月月1 1日到日到日到日到99999999年年年年1212月月月月3131日日日日ObjectObject4 4字节字节字节字节任何对象引用任何对象引用任何对象引用任何对象引用StringString字符长度字符长度字符长度字符长度分为定长和可变长度两种,可变长可达分为定长和可变长度两种,可变长可达分为定长和可变长度两种,可变长可达分为定长和可变长度两种,可变长可达0 02020亿个字符,定长最多亿个字符,定长最多亿
24、个字符,定长最多亿个字符,定长最多6553665536个字符个字符个字符个字符Variant(Variant(数字数字数字数字)1616字节字节字节字节任何数字,最大达到任何数字,最大达到任何数字,最大达到任何数字,最大达到doubledouble的数值范围的数值范围的数值范围的数值范围Variant(Variant(字符字符字符字符)22+22+字符串长度字符串长度字符串长度字符串长度约约约约0 02020亿亿亿亿10.2 VBA程序设计基础n n字符串类型字符串类型n n在在VBAVBA中有两种类型的字符串,变长与定长的字符串。中有两种类型的字符串,变长与定长的字符串。Dim s1 As
25、String /变长类型Dim s2 As String*10 /定长类型s1=dddkdk s2=d1234567890sssss 10.2 VBA程序设计基础n n布尔类型n n布布尔尔类类型型是是比比较较运运算算或或逻逻辑辑运运算算的的结结果果值值,它它只只有有两两个个取取值值:TrueTrue和和FalseFalse。TrueTrue是是比比较较结结果果为为真真时时的的值,值,FalseFalse是比较结果为假时的值。是比较结果为假时的值。Dim A As Boolean Dim B As Boolean A=35 B=True10.2 VBA程序设计基础n n日期类型n n日日期期型
26、型数数据据用用于于保保存存日日期期,占占8 8个个字字节节的的存存储储空空间间,以以浮浮点点数数值值形形式式保保存存日日期期,可可以以表表示示的的日日期期范范围围从从公公元元100100年年1 1月月1 1日日到到公公元元9999 9999 年年1212月月3131日日,而而时时间可以从间可以从0:00:00 0:00:00 到到 23:59:5923:59:59。n n日期文字以日期文字以“#”#”作界定符。作界定符。Dim d1,d2 As Dated1=#1 Jul 98#D1的取值是1998年7月1号d2=#12/2/2000#D2的值是2000年12月2号10.2 VBA程序设计基础
27、n n变体数据类型n nVariant Variant 是是一一种种特特殊殊的的数数据据类类型型,除除了了定定长长 String String 数数据据及及用用户户定定义义类类型型外外,它它可可以以包包含含任任何何种种类类的的数数据。据。Dim ar As Variantar=12ar=string typear=abc&arar=12.23在本例中,在本例中,ar的类型是不定的!的类型是不定的!10.2 VBA程序设计基础n n数组 n n在在VBAVBA中中,可可以以声声明明一一个个数数组组来来代代表表一一组组具具有有相相同同数数据据类类型型的数据,它就是数组。的数据,它就是数组。假假设设
28、一个班有一个班有20个同学,每个同学有个同学,每个同学有5门课门课程,可以定程,可以定义义一个一个20行行5列的二列的二维维数数组组来保存他来保存他们们的成的成绩绩Dim stu(1 To 20,1 To 5)As Single这这条命令定条命令定义义了一个二了一个二维维表格,如下所示。表格,如下所示。stu(1,1)=78stu(1,2)=90stu(1,3)=87stu(1,4)=88stu(1,5)=76数组访问方法数组访问方法7810.2 VBA程序设计基础n n对象、属性和方法 n n计计算算机机程程序序设设计计中中的的对对象象是是从从现现实实世世界界中中抽抽象象出出来来的,它与现实
29、世界中的对象具有相同的含义。的,它与现实世界中的对象具有相同的含义。n n对象具有属性和方法两种特性。对象具有属性和方法两种特性。年龄:年龄:30学历:硕士学历:硕士身高:身高:173cm体重:体重:69公斤公斤说自己的年龄说自己的年龄学习学习授课授课李立李立属性属性方法方法对象属性语法规则对象属性语法规则李立李立.年龄年龄=32李立李立.体重体重=70方法的调用也要按这种语法规则方法的调用也要按这种语法规则李立李立.学习学习李立李立.授课授课Excel对象示例对象示例10.3 子程序1.1.子程序的两种结构子子程程序序是是VBAVBA的的最最小小程程序序单单位位,它它必必须须独独立立存存在在
30、,但但在在一一个个子子程程序序中中可可以以调调用用另另外外一一个个子子程程序序。它它有有两种形式,第一种没有参数,第二种有参数两种形式,第一种没有参数,第二种有参数 Sub 子程序名子程序名 子程序代码子程序代码 End SubSub 子程序名子程序名(p1,p2,p3)子程序代码子程序代码 End Sub10.3 子程序2、子程序的调用形式1 1)直接调用)直接调用n n直直接接调调用用子子程程序序名名,如如果果有有参参数数,则则在在子子程程序序后后面面直直接接写上调用参数;写上调用参数;2 2)用)用CallCall命令调用命令调用n n在在CallCall命命令令的的后后面面写写上上了了
31、程程序序的的名名字字,如如果果子子程程序序有有参参数,则必须将参数写在括号中。数,则必须将参数写在括号中。10.3 子程序n n子程序调用举例1 Sub Main()2 HouseCalc 99800,431003 Call HouseCalc(380950,49500)4 CircleArea(4)5 CircleArea 46 Message7 End SubSub HouseCalc(price As Single,wage As Single)If 3*wage 1500 Then rate=0.1 Else rate=0.05 10.5 VBA选择结构n n形式2If 条件 Then
32、 语句组1 Else 语句组2 End IfFunction abc(a,b)If a b Then t=a a=b b=tEnd Ifabc=aEnd Function例如例如10.5 VBA选择结构n n形式3If 条件条件1 Then 语句组语句组1ElseIf 条件条件2 Then 语句组语句组2 ElseIf 条件条件n Then 语句组语句组nElse 语句组语句组n+1End If 10.5 VBA选择结构3、条件函数案例n n某某汽汽车车出出租租公公司司可可为为顾顾客客提提供供运运送送货货物物的的业业务务,根根据据货货物物的的重重量量及及路路程程可可对对运运费费进进行行适适当当
33、的的优优惠惠。设设运运费费F F(单单位位为为元元),重重量量P P(单单位位为为吨吨),路路程程S S(公公里里)及及优优惠惠系系数数(D D)之间的关系式为:)之间的关系式为:F=P*S*W*(1-D)F=P*S*W*(1-D)。n n优优惠惠系系数数D D与与路路程程远远近近的的关关系系如如下下,编编写写计计算算折折扣扣的函数的函数10.5 VBA选择结构n n计算折扣的函数计算折扣的函数计算折扣的函数计算折扣的函数Function d(s)Function d(s)If s=1000 Then If s=1000 Then d=0.1 d=0.1 ElseIf s=750 Then E
34、lseIf s=750 Then d=0.07 d=0.07 ElseIf s=500 Then ElseIf s=500 Then d=0.05 d=0.05 ElseIf s=250 Then ElseIf s=250 Then d=0.02 d=0.02 Else Else d=0 d=0 End If End IfEnd FunctionEnd Function10.5 VBA选择结构n n调用自定义函数计算10.5 VBA选择结构n n4 分情况选择语句 Select CaseSelect Case语句的语法结构如下。语句的语法结构如下。Select Case 测试表测试表达式达式C
35、ase 表达式表达式1 语句组语句组1Case 表达式表达式2 语句组语句组2 Case Else 语句组语句组n End Select 10.5 VBA选择结构n nSelect 案例n n某某学学校校的的职职工工人人事事数数据据存存在在ExcelExcel工工作作表表中中,如如图图所所示示。现现在在,要要按按职职称称提提升升每每位位职职工工的的工工资资,各各种种职职称称的的工工资资增增长长情情况况如如下下:教教授授150150、副副教教授授130130、讲讲师师100100、助助教教8080、高高级工程师级工程师150150、工程师、工程师140140、助工、助工9090。n n用用sel
36、ectselect语句编写计算增加工资的语句编写计算增加工资的 函数。函数。10.5 VBA选择结构n n编写的Seclect 函数Function AddSalary(职称职称)职称作为一个参数职称作为一个参数 Select Case 职称职称 Case 教授教授,高级工程师高级工程师 AddSalary=150 Case 副教授副教授 AddSalary=130 Case 讲师讲师 AddSalary=100 Case 助教助教 AddSalary=80 Case 工程师工程师 AddSalary=140 Case 助工助工 AddSalary=90 End SelectEnd Funct
37、ion10.6 VBA循环结构n n在在计计算算机机中中,一一些些被被重重复复执执行行的的语语句句是是通通过过循循环环来来完成的。完成的。n n1、ForNext循环结构 For counter=start To end step 步长步长 循环语句循环语句1 循环语句循环语句2 循环语句循环语句3 循环语句循环语句nNext counter10.6 VBA循环结构n nFor循环案例n n 某某公公司司职职工工档档案案数数据据保保存存在在ExcelExcel工工作作表表中中,如如下下图图所所示示。该该公公司司共共有有1 1 234234名名职职工工,每每月月要要从从工工资资表表中中扣扣除除一
38、一定定的的住住房房公公积积金金,假假设设住住房房公公积积金金按按以以下的百分比扣除。下的百分比扣除。n n编写计算公积金比例的宏程序。编写计算公积金比例的宏程序。10.6 VBA循环结构Function countrate(salary As Double)这个函数计算公积金的百分比这个函数计算公积金的百分比 Dim rate As Double If salary 2000 Then rate=0.1 ElseIf salary 1500 Then rate=0.07 ElseIf salary 1200 Then rate=0.05 ElseIf salary 1000 Then rate
39、=0.02 ElseIf salary 800 Then rate=0.01 Else rate=0 End If countrate=rateEnd Function数函的例比金积公算计数函的例比金积公算计10.6 VBA循环结构n n计算所有职工工积金的宏Sub CountData()For i=3 To 1236 从工作表的第3行开始计算。第3行中的是第1位职工工资 r=countrate(Cells(i,2)计算出第i位职工的公积金比例 Cells(i,3)=r 将第i位职工的公积金比例填入本行的第3列中 Cells(i,3).Style=Percent 将公积金比例的格式设置为百分比
40、 Cells(i,4)=r*Cells(i,2)计算第1位职工的公积金并填入本行的第4列中 Cells(i,5)=Cells(i,2)-Cells(i,4)计算第i位职工的应发工资并填入第5列中NextEnd Sub10.6 VBA循环结构n n调用宏计算公积金10.6 VBA循环结构n n2 WhileWend循环结构n n在在事事先先知知道道循循环环次次数数时时,用用ForFor循循环环方方便便。如如果果事事先先并并不不知知道道 循循 环环 次次 数数,但但 知知 道道 执执 行行 或或 结结 束束 循循 环环 的的 条条 件件,则则 用用DoLoopDoLoop循环或循环或WhileWe
41、ndWhileWend循环。循环。n nWhileWhile循环的语法结构如下循环的语法结构如下 While 判定条件判定条件 语句语句1 语句语句2 Wend 10.6 VBA循环结构n n3 DoLoop循环结构 第一种结构为:第一种结构为:Do While 判定条件判定条件 Loop第二种结构为:第二种结构为:Do Loop While 判定条件判定条件第三种结构为:第三种结构为:Do Until判定条件判定条件 Loop 第四种结构为:第四种结构为:Do Loop Until 判定条件判定条件10.6 VBA循环结构n n案例n n在在上上节节的的ForFor循循环环实实例例中中,假假
42、设设并并不不知知道道有有多多少少位位职职 工工,在在 其其 他他 条条 件件 都都 相相 同同 的的 条条 件件 下下,现现 用用WhileWendWhileWend循循环环结结构构来来计计算算每每位位职职工工的的住住房房公公积积金比例、应交公积金和实际发放工资。金比例、应交公积金和实际发放工资。n n改写的函数如下改写的函数如下 10.6 VBA循环结构n n用While循环改定的函数Sub CountDataB()i=3 第第1位职工在第位职工在第3行行While Not(IsEmpty(Cells(i,2)从工作表的第从工作表的第3行开始计算行开始计算 r=countrate(Cells
43、(i,2)计算出第计算出第i位职工的公积金比例位职工的公积金比例 Cells(i,3)=r 把第把第i位职工的公积金比例填入本行的第位职工的公积金比例填入本行的第3列中列中 Cells(i,3).Style=Percent 把公积金比例的格式设置为百分比把公积金比例的格式设置为百分比 Cells(i,4)=r*Cells(i,2)计算第计算第1位职工的公积金并填入本行的第位职工的公积金并填入本行的第4列中列中 Cells(i,5)=Cells(i,2)-Cells(i,4)计算第计算第i位职工的应发工资并填入本行第位职工的应发工资并填入本行第5列列中中 i=i+1 计算下一位职工的公积金计算下
44、一位职工的公积金WendEnd Sub10.6 VBA循环结构n n用do循环改写的函数Sub CountDataC()i=3 Do r=countrate(Cells(i,2)Cells(i,3)=r Cells(i,3).Style=Percent Cells(i,4)=r*Cells(i,2)Cells(i,5)=Cells(i,2)-Cells(i,4)i=i+1Loop Until(IsEmpty(Cells(i,2)End Sub 10.6 VBA循环结构n n4 数组在循环中的应用 n n循循环环的的主主要要功功能能是是进进行行VBAVBA代代码码的的重重复复执执行行,数数组组的
45、主要功能是存储大量的数据。的主要功能是存储大量的数据。n n在在计计算算机机应应用用中中,数数组组和和循循环环相相结结合合能能够够解解决决许许多多实实际际问问题题。例例如如大大批批量量数数据据的的排排序序、统统计计、检检索索等等功能。功能。n n案例案例10.6 VBA循环结构n n某某学学校校每每年年对对新新生生都都要要进进行行一一次次英英语语入入学学测测试试,以以了了解解每每位位学学生生的的英英语语能能力力。考考试试完完毕毕后后,要要统统计计每每个个分分数数段段的的人人数数,并并根根据据学学生生的的成成绩绩将将他他们们分分为为A A、B B、CC若若干干个个班班,第第125125名名同同学
46、学进进入入A A班班,第第26502650名名同同学学进进入入B B班班,其其余余的的以以此此类类推推。该该校校每每年年招招收收的的人人数数都都有有细细小小的的差差别别。假假设设学学生的英语测试成绩如下页图示。生的英语测试成绩如下页图示。n n n n编写一个宏完成以下功能。编写一个宏完成以下功能。编写一个宏完成以下功能。编写一个宏完成以下功能。n n自自自自动动动动统统统统计计计计出出出出各各各各分分分分数数数数段段段段的的的的人人人人数数数数,并并并并将将将将统统统统计计计计结结结结果果果果保保保保存存存存在在在在一一一一个个个个新的工作表中。新的工作表中。新的工作表中。新的工作表中。n
47、n对所有的考试成绩进行排序。对所有的考试成绩进行排序。对所有的考试成绩进行排序。对所有的考试成绩进行排序。n n根根根根据据据据排排排排名名名名对对对对学学学学生生生生进进进进行行行行分分分分班班班班,每每每每个个个个班班班班2525名名名名学学学学生生生生,每每每每个个个个班班班班保保保保存在一个新的工作表中。存在一个新的工作表中。存在一个新的工作表中。存在一个新的工作表中。10.6 VBA循环结构n n成绩表n n本例程序代码较多,不便本例程序代码较多,不便PPTPPT演示,可直接查看演示,可直接查看ExcelExcel中的宏。中的宏。10.7 模块与变量的作用域1.1.VBA变量的作用域
48、变量的作用域n n变量的作用域是指变量的有效范围。变量的作用域是指变量的有效范围。变量的作用域是指变量的有效范围。变量的作用域是指变量的有效范围。n n局部变量局部变量局部变量局部变量n n在在在在VBAVBA宏宏宏宏或或或或函函函函数数数数内内内内部部部部定定定定义义义义的的的的变变变变量量量量,只只只只能能能能在在在在定定定定义义义义它它它它的的的的函函函函数或宏范围内可用,这种变量称为局部变量。数或宏范围内可用,这种变量称为局部变量。数或宏范围内可用,这种变量称为局部变量。数或宏范围内可用,这种变量称为局部变量。n n模块级变量模块级变量模块级变量模块级变量 n n如如如如果果果果一一一
49、一个个个个变变变变量量量量在在在在模模模模块块块块的的的的开开开开始始始始部部部部分分分分定定定定义义义义,且且且且不不不不包包包包含含含含在在在在任任任任何何何何宏宏宏宏或或或或函函函函数数数数体体体体内内内内,则则则则在在在在本本本本模模模模块块块块内内内内的的的的所所所所有有有有宏宏宏宏或或或或函函函函数数数数中中中中都都都都可以使用它可以使用它可以使用它可以使用它 。n n全局变量全局变量全局变量全局变量 n n在整个应用程序的各个模块之间都可共用的变量。在整个应用程序的各个模块之间都可共用的变量。在整个应用程序的各个模块之间都可共用的变量。在整个应用程序的各个模块之间都可共用的变量。
50、10.7 模块与变量的作用域n n2、变量的定义方式n n宏或函数的私有变量,可直接在宏或函数体内定义。宏或函数的私有变量,可直接在宏或函数体内定义。宏或函数的私有变量,可直接在宏或函数体内定义。宏或函数的私有变量,可直接在宏或函数体内定义。n n在模块的声明段中使用在模块的声明段中使用在模块的声明段中使用在模块的声明段中使用DimDim语句声明一个模块级变量。语句声明一个模块级变量。语句声明一个模块级变量。语句声明一个模块级变量。n n在在在在模模模模块块块块的的的的声声声声明明明明段段段段中中中中(或或或或模模模模块块块块内内内内),使使使使用用用用Public Public 语语语语句句