《Excel的使用第10章.ppt》由会员分享,可在线阅读,更多相关《Excel的使用第10章.ppt(99页珍藏版)》请在金锄头文库上搜索。
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宏宏是是用用户户用用VBA程程序序设设计计语语言言编编写写或或录录制制的的程程序序,其其中中保保存存有有一一系系列列Excel 的的命命令令,可可以以被被多多次次重重复
4、复使使用用。宏宏可可以以自动执行复杂的任务,减少完成任务所需的步骤。自动执行复杂的任务,减少完成任务所需的步骤。nVBA即即Visual Basic for Applications,它它是是Visual Basic的的一一个个派派生生体体,它它有有针针对对性性地地对对Visual Basic进进行行了了优优化化和和设设置置。两两者者的的主主要要区区别别在在于于:Visual Basic开开发发的的应应用用程程序序可可以以独独立立在在Windows系系统统中中运运行行,而而用用VBA开发的程序只能在提供它的应用程序中运行。开发的程序只能在提供它的应用程序中运行。n在在Excel中中,可可以以用
5、用Excel提提供供的的宏宏录录制制工工具具录录制制宏宏程程序序,也可以使用它提供的也可以使用它提供的“Visual Basic 编辑器编辑器”直接编写宏。直接编写宏。10.1 Excel宏n n2、 录制宏 n宏录制器是Excel提供的一种软件工具,它能够将用户的操作过程记录下来,并自动将所记录的操作转换成为VBA程序代码。n对于经常重复进行的操作过程,可以通过宏录制器将它记录下来,当需要再次进行这些操作时,只需要运行录制的宏,Excel就能自动完成这些重复的操作。n说明:当录制宏的工作开始后,所有的操作步骤都将被记录在宏中,所以应尽量减少不必要的或错误的操作,如果在录制宏时出现失误,更正失
6、误的操作也会记录在宏中。 10.1 Excel宏n n录制宏的案例n建立10班的学生档案表,档案表的结构如下图所示。录制一个能够建立这种档案表结构的宏。10.1 Excel宏n n建立学生档案宏1.选择“工具”|“宏”|“录制新宏”菜单项,在弹出的下示对话框中输入宏名字“学生档案”2.单击“确定” 10.1 Excel宏n3.输入表格内容(1)单击A1单元格,在其中输入“2001级学生档案”。(2)单击A2单元格,在其中输入“学号”。(3)单击B2单元格,在其中输入“姓名”。(4)单击C2单元格,在其中输入“班级”。(5)单击D2单元格,在其中输入“性别”。(6)单击E2单元格,在其中输入“籍
7、贯”。(7)单击F2单元格,在其中输入“寝室”。(8)单击G2单元格,在其中输入“电话号码”。(9)选择A1:G1单元格区域,然后单击工具条中的跨列居中按钮。(10)单击“停止”记录制工具条中的停止按钮。(11)保存该工作簿为“学籍档案.xls”。10.1 Excel宏n4.停止录制,查看录制的宏n选择“工具”|“宏”|“停止录制”n选择“工具”|“宏”|“宏”菜单项,会显示“宏”对话框。选中其中的“学生档案”,单击“编辑” 。10.1 Excel宏n宏代码宏代码n1Sub 学生档案学生档案()n2 学生档案学生档案 Macron3 宏由宏由 dk 录制,时间录制,时间: 2004-7-18n
8、4 快捷键快捷键: Ctrl+sn5Range(A1).Selectn6ActiveCell.FormulaR1C1 = 2001级一班学生档案级一班学生档案n7Range(A2).Selectn8ActiveCell.FormulaR1C1 = 学号学号n9Range(B2).Selectn10ActiveCell.FormulaR1C1 = 姓名姓名n11Range(C2).Selectn12ActiveCell.FormulaR1C1 = 班级班级n13Range(D2).Selectn14ActiveCell.FormulaR1C1 = 性别性别n15Range(E2).Selectn
9、16ActiveCell.FormulaR1C1 = 籍贯籍贯n17Range(F2).Selectn18ActiveCell.FormulaR1C1 = 寝室寝室10.1 Excel宏n19Range(G2).Selectn20ActiveCell.FormulaR1C1 = 电话号码n21Range(A1:G1).Selectn22 With Selectionn23.HorizontalAlignment = xlCentern24.VerticalAlignment = xlBottomn25.WrapText = Falsen26.Orientation = 0n27.AddInde
10、nt = Falsen28.ShrinkToFit = Falsen29End Withn30 Selection.Mergen31End Sub10.1 Excel宏5、宏的结构Sub 宏名( ) 命令代码1 命令代码2 End Sub6、With的结构With Selection End With10.1 Excel宏n n7、 宏的保存n保存在个人宏工作簿“Personal.xls”中。n保存在专门保存宏的“新的工作簿”中。n 保存在建立宏的当前工作薄中。10.1 Excel宏n n8、宏的执行n通过快捷键运行宏n通过对话框运行宏n通过自定义工具按钮运行宏n通过图形控件或窗体命令按钮运行
11、宏n通过自定义菜单运行宏(以后再讲) 10.2 VBA程序设计基础n n1、数据类型的概念、数据类型的概念n在在计计算算机机中中,数数据据也也是是按按不不同同的的类类别别进进行行运运算算和和保保存存的的,人人们们称称之之为为数数据据类类型型。同同种种类类型型的的数数据据占占用用相相同同大大小小的的存存储储空空间间,相相互互之之间间可可以以进进行行计计算算、比比较较或或赋赋值值等等操操作作;不不同同类类型型的的数数据据占占用用的的存存储储空空间间大大小小不不一一定定相相同同,且且相相互互之之间间不不能能进进行行计计算算和和比比较较等操作等操作 。n n2、VBA的数据类型的数据类型(1)常量)常
12、量 n数值常量数值常量 ,如:1,2,65,98.65等10.2 VBA程序设计基础n字符及字符串常量字符及字符串常量 n字符类型的常量称为字符常量,字符常量要用定界符双引号(“ ”)界定。例如,“d”、“5”、“A”等都是字符常量。n符号常量符号常量 nConst 常量名=常量值n例如,Const PI=3.14,Const ABC=OK ! China! 10.2 VBA程序设计基础n n(2)变量n变量是在程序运行期间其值可以发生变化的数据。n例如:1 Dim A,B As Integer2 A=13 B=24 A=4+b5A=3A在本程序段中有在本程序段中有3个不同的值,这就是变!个不
13、同的值,这就是变!10.2 VBA程序设计基础nVBA数值数据类型 数据类型数据类型存储空间存储空间数数 据据 范范 围围Byte1 字节字节0255Boolean2字节字节True 或或 falseInteger 2 字节字节-32 76832 767Long4 字节字节-2 147 483 6482 147 483 647Single4 字节字节负数:负数:-3.402823E38-1.401298E-45正数:正数: 1.401298E-453.402823E38Double8 字节字节负数:负数:1.79769313486232E308-4.94065645841247E-324正数:
14、正数:4.94065645841247E-3241.79769313486232E308Currency8 字节字节-922337203685477.5808922337203685477.5807Date8字节字节0100年年1月月1日到日到9999年年12月月31日日Object4字节字节任何对象引用任何对象引用String字符长度字符长度分为定长和可变长度两种,可变长可达分为定长和可变长度两种,可变长可达020亿个字符,定长最多亿个字符,定长最多65536个字符个字符Variant(数字数字)16字节字节任何数字,最大达到任何数字,最大达到double的数值范围的数值范围Variant(
15、字符字符)22+字符串长度字符串长度约约020亿亿10.2 VBA程序设计基础n字符串类型n在VBA中有两种类型的字符串,变长与定长的字符串。 Dim s1 As String /变长类型Dim s2 As String *10 /定长类型s1=dddkdk s2=d1234567890sssss 10.2 VBA程序设计基础n n布尔类型n布尔类型是比较运算或逻辑运算的结果值,它只有两个取值:True和False。True是比较结果为真时的值,False是比较结果为假时的值。 Dim A As Boolean Dim B As Boolean A=35 B=True10.2 VBA程序设计基
16、础n n日期类型n日期型数据用于保存日期,占8个字节的存储空间,以浮点数值形式保存日期,可以表示的日期范围从公元100年1月1日到公元9999 年12月31日,而时间可以从0:00:00 到 23:59:59。 n日期文字以“#”作界定符。Dim d1,d2 As Dated1=# 1 Jul 98 # D1的取值是1998年7月1号d2=# 12/2/2000 # D2的值是2000年12月2号10.2 VBA程序设计基础n n变体数据类型nVariant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,它可以包含任何种类的数据。 Dim ar As Variantar
17、= 12ar = string typear = abc & arar = 12.23在本例中,在本例中,ar的类型是不定的!的类型是不定的!10.2 VBA程序设计基础n n数组 n在VBA中,可以声明一个数组来代表一组具有相同数据类型的数据,它就是数组。假假设一个班有一个班有20个同学,每个同学有个同学,每个同学有5门课程,可以定程,可以定义一个一个20行行5列的二列的二维数数组来保存他来保存他们的成的成绩Dim stu(1 To 20, 1 To 5) As Single这条命令定条命令定义了一个二了一个二维表格,如下所示。表格,如下所示。stu(1,1)=78stu(1,2)=90st
18、u(1,3)=87stu(1,4)=88stu(1,5)=76数组访问方法数组访问方法7810.2 VBA程序设计基础n n对象、属性和方法 n计算机程序设计中的对象是从现实世界中抽象出来的,它与现实世界中的对象具有相同的含义。n对象具有属性和方法两种特性。年龄:年龄:30学历:硕士学历:硕士身高:身高:173cm体重:体重:69公斤公斤说自己的年龄说自己的年龄学习学习授课授课李立李立属性属性方法方法对象属性语法规则对象属性语法规则李立李立.年龄年龄=32李立李立.体重体重=70方法的调用也要按这种语法规则方法的调用也要按这种语法规则李立李立.学习学习李立李立.授课授课Excel对象示例对象示
19、例10.3 子程序1.1.子程序的两种结构子程序是VBA的最小程序单位,它必须独立存在,但在一个子程序中可以调用另外一个子程序。它有两种形式,第一种没有参数,第二种有参数 Sub 子程序名子程序名 子程序代码子程序代码 End SubSub 子程序名子程序名(p1, p2, p3) 子程序代码子程序代码 End Sub10.3 子程序2、子程序的调用形式1)直接调用n直接调用子程序名,如果有参数,则在子程序后面直接写上调用参数;2)用Call命令调用n在Call命令的后面写上了程序的名字,如果子程序有参数,则必须将参数写在括号中。 10.3 子程序n n子程序调用举例1 Sub Main()2
20、 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 语句组1 Else 语句组2 End IfFunction abc (a, b)If a b Then t = a a = b b = tEnd Ifabc
21、=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某汽车出租公司可为顾客提供运送货物的业务,根据货物的重量及路程可对运费进行适当的优惠。设运费F(单位为元),重量P(单位为吨),路程S(公里)及优惠系数(D)之间的关系式为:F=P*S*W*(1-D)。n优惠系数D与路程远近的关系如下,编写计算折扣的函数10.5 VBA选择结构n计算折扣的函数计算折
22、扣的函数Function d(s) If s = 1000 Then d = 0.1 ElseIf s = 750 Then d = 0.07 ElseIf s = 500 Then d = 0.05 ElseIf s = 250 Then d = 0.02 Else d = 0 End IfEnd Function10.5 VBA选择结构n n调用自定义函数计算10.5 VBA选择结构n n4 分情况选择语句 Select Case语句的语法结构如下。Select Case 测试表测试表达式达式Case 表达式表达式1 语句组语句组1Case 表达式表达式2 语句组语句组2 Case Els
23、e 语句组语句组n End Select 10.5 VBA选择结构n nSelect 案例n某学校的职工人事数据存在Excel工作表中,如图所示。现在,要按职称提升每位职工的工资,各种职称的工资增长情况如下:教授150、副教授130、讲师100、助教80、高级工程师150、工程师140、助工90。n用select语句编写计算增加工资的 函数。10.5 VBA选择结构n n编写的Seclect 函数Function AddSalary(职称职称) 职称作为一个参数职称作为一个参数 Select Case 职称职称 Case 教授教授, 高级工程师高级工程师 AddSalary = 150 Cas
24、e 副教授副教授 AddSalary = 130 Case 讲师讲师 AddSalary = 100 Case 助教助教 AddSalary = 80 Case 工程师工程师 AddSalary = 140 Case 助工助工 AddSalary = 90 End SelectEnd Function10.6 VBA循环结构n在计算机中,一些被重复执行的语句是通过循环来完成的。n n1、 ForNext循环结构 For counter = start To end step 步长步长 循环语句循环语句1 循环语句循环语句2 循环语句循环语句3 循环语句循环语句nNext counter10.6
25、 VBA循环结构n nFor循环案例n 某公司职工档案数据保存在Excel工作表中,如下图所示。该公司共有1 234名职工,每月要从工资表中扣除一定的住房公积金,假设住房公积金按以下的百分比扣除。 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 r
26、ate = 0.05 ElseIf salary 1000 Then rate = 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位职工
27、的公积金比例填入本行的第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列中NextEnd Sub10.6 VBA循环结构n n调用宏计算公积金10.6 VBA循环结构n n2 WhileWend循环结构n在事先知道循环次数时,用For循环方便。如果事先并不知道循环次数,但知道执行或结束循环的条件,则用DoLoop循环或WhileW
28、end循环。nWhile循环的语法结构如下 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在上节的For循环实例中,假设并不知道有多少位职 工 , 在 其 他 条 件 都 相 同 的 条 件 下 , 现
29、 用WhileWend循环结构来计算每位职工的住房公积金比例、应交公积金和实际发放工资。n改写的函数如下 10.6 VBA循环结构n n用While循环改定的函数Sub CountDataB()i = 3 第第1位职工在第位职工在第3行行While Not (IsEmpty(Cells(i, 2) 从工作表的第从工作表的第3行开始计算行开始计算 r = countrate(Cells(i, 2) 计算出第计算出第i位职工的公积金比例位职工的公积金比例 Cells(i, 3) = r 把第把第i位职工的公积金比例填入本行的第位职工的公积金比例填入本行的第3列中列中 Cells(i, 3).Sty
30、le = Percent 把公积金比例的格式设置为百分比把公积金比例的格式设置为百分比 Cells(i, 4) = r * Cells(i, 2) 计算第计算第1位职工的公积金并填入本行的第位职工的公积金并填入本行的第4列中列中 Cells(i, 5) = Cells(i, 2) - Cells(i, 4) 计算第计算第i位职工的应发工资并填入本行第位职工的应发工资并填入本行第5列列中中 i = i + 1 计算下一位职工的公积金计算下一位职工的公积金WendEnd Sub10.6 VBA循环结构n n用do循环改写的函数Sub CountDataC ( )i = 3 Do r = count
31、rate(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循环的主要功能是进行VBA代码的重复执行,数组的主要功能是存储大量的数据。n在计算机应用中,数组和循环相结合能够解决许多实际问题。例如大批量数据的排序、统计、检索等功能。 n案例10.6
32、 VBA循环结构n某学校每年对新生都要进行一次英语入学测试,以了解每位学生的英语能力。考试完毕后,要统计每个分数段的人数,并根据学生的成绩将他们分为A、B、C若干个班,第125名同学进入A班,第2650名同学进入B班,其余的以此类推。该校每年招收的人数都有细小的差别。假设学生的英语测试成绩如下页图示。n n编写一个宏完成以下功能。编写一个宏完成以下功能。n自自动动统统计计出出各各分分数数段段的的人人数数,并并将将统统计计结结果果保保存存在在一一个个新的工作表中。新的工作表中。n对所有的考试成绩进行排序。对所有的考试成绩进行排序。n根根据据排排名名对对学学生生进进行行分分班班,每每个个班班25名
33、名学学生生,每每个个班班保保存在一个新的工作表中。存在一个新的工作表中。10.6 VBA循环结构n n成绩表n本例程序代码较多,不便PPT演示,可直接查看Excel中的宏。10.7 模块与变量的作用域1.1.VBA变量的作用域变量的作用域n变量的作用域是指变量的有效范围。变量的作用域是指变量的有效范围。n局部变量局部变量n在在VBA宏宏或或函函数数内内部部定定义义的的变变量量,只只能能在在定定义义它它的的函函数或宏范围内可用,这种变量称为局部变量。数或宏范围内可用,这种变量称为局部变量。n模块级变量模块级变量 n如如果果一一个个变变量量在在模模块块的的开开始始部部分分定定义义,且且不不包包含含
34、在在任任何何宏宏或或函函数数体体内内,则则在在本本模模块块内内的的所所有有宏宏或或函函数数中中都都可以使用它可以使用它 。n全局变量全局变量 n在整个应用程序的各个模块之间都可共用的变量。在整个应用程序的各个模块之间都可共用的变量。 10.7 模块与变量的作用域n n2、变量的定义方式n宏或函数的私有变量,可直接在宏或函数体内定义。宏或函数的私有变量,可直接在宏或函数体内定义。n在模块的声明段中使用在模块的声明段中使用Dim语句声明一个模块级变量。语句声明一个模块级变量。n在在模模块块的的声声明明段段中中(或或模模块块内内),使使用用Public 语语句句,而而非非Dim语句来声明一个公共变量
35、。声明方式如下。语句来声明一个公共变量。声明方式如下。nPublic 变量名表变量名表 As 数据类型数据类型n在在宏宏或或函函数数的的名名称称前前也也可可以以加加上上Public关关键键字字,这这样样的的宏宏或或函函数数就就是是全全局局宏宏(全全局局函函数数)。例例如如,Public Ma, Ya, Ta As Integer。 10.7 模块与变量的作用域n n3、变量类型的案例n假设有一个教师的档案表(部分数据),如图所示。编写宏将其中的男教师和女教师分别保存在新工作表中。10.7 模块与变量的作用域n n插入两模块,在模块1中的程序如下Public N声明一个全局变量用于保存教师总人数
36、声明一个全局变量用于保存教师总人数Public tea(100,5) As Variant声明一个全局数组保存教师的所有数据,声明一个全局数组保存教师的所有数据,Sub readData()Dim i,j As Integer定义两个只能在本宏内部分使用的局部变量定义两个只能在本宏内部分使用的局部变量Worksheets(教师总表教师总表).Activate 激活教师工作表激活教师工作表N=1While Not IsEmpty(Cells (N,1)如果教师工作表中的第一列数据非空,就将如果教师工作表中的第一列数据非空,就将For i=1 To 5该行的数据读入全局数组中该行的数据读入全局数组
37、中tea(N,i)=Cells(N,i)Next iN=n+1读入一个教师的数据后,教师的人数增加一个读入一个教师的数据后,教师的人数增加一个WendEnd Sub10.7 模块与变量的作用域n n分离出男教师的宏Dim i,j,k As IntegerSub man()Sheets.Add 插入一个工作表,在其中保存男教师的数据插入一个工作表,在其中保存男教师的数据Active Sheet.Name=男教师男教师修改工作表的名称为修改工作表的名称为“男教师男教师”For j=1 To 5Cells(1,j)=tea(1,j)读入第一行数据即表头到二维数组的第一行读入第一行数据即表头到二维数组
38、的第一行Next jk=2k统计男教师的人数统计男教师的人数For i=2 To N从数组的第从数组的第2行开始分析数据行开始分析数据If tea(i,3)=男男Then如果数组的第如果数组的第3列中的数据为列中的数据为“男男”For j=1 To 5Cells(k,j)=tea(i,j) 将将“男男”教师的数据从数组读入工作表教师的数据从数组读入工作表Next jk=k+1End IfNext iEnd Sub10.7 模块与变量的作用域n n制定调用宏的工作表10.8 窗体及其应用1.1.窗体的概念n窗体是VBA的一种控件,可以用来显示Excel工作表中的数据,也可以用来设计用户输入数据的
39、界面。n窗体必须与宏程序结合使用,通过宏可以将窗体与Excel的工作表、自定义菜单、按钮或图形控件结合在一起。10.8 窗体及其应用n n窗体设计案例n为上例的教师管理工作薄建立窗体,该窗体可用于显示、修改及输入“教师总表”中的数据。窗体的样式如下图所示。10.8 窗体及其应用2、建立窗体的版面(1)打开“教师管理宏”工作薄,进入其VBA编程环境。(2)选择VBA的“插入”|“用户窗体”,会见到图示的设计界面。10.8 窗体及其应用n n窗体设计工具箱这是绝大多数这是绝大多数Wndows编程工具都支持的工具编程工具都支持的工具编程工具,一定要掌握编程工具,一定要掌握其用法!其用法!10.8 窗
40、体及其应用n n向窗体添加工具箱中的控件工具属性对话框中重要的设计属性对话框中重要的设计工具,它标准而通用,通工具,它标准而通用,通过它能够轻松地修改与设过它能够轻松地修改与设置窗体中各控件的大小、置窗体中各控件的大小、颜色、名字等。颜色、名字等。在窗体中添加一在窗体中添加一标签标签控控件,然后通过属性对话件,然后通过属性对话框修改该控件的背景色、框修改该控件的背景色、标题内容和字体大小标题内容和字体大小10.8 窗体及其应用n向窗体中添加标签、编辑框和命令按钮等控件,调整窗体大小和控件的位置,设置各控件的字体、字型、前景和背景等属性,如样图所示。10.8 窗体及其应用n n3、为命令按钮编写
41、事件程序n双击要编写事件程序的控件,会见下示编程界面1、选择要编写事件程、选择要编写事件程序的对象序的对象2、选择事件、选择事件3、输入程序代码、输入程序代码10.8 窗体及其应用n n部分窗体控件的事件程序n窗体初始化事件程序Private Sub UserForm_Initialize() Worksheets(“教师总表教师总表”).Activate 激活教师工作表激活教师工作表 n = 2 第第1次显示工作表次显示工作表“教师总表教师总表”的第的第2行数据行数据 display 调用显示宏,将工作表中的数据显示在窗体的文本框调用显示宏,将工作表中的数据显示在窗体的文本框中中End Su
42、bPrivate Sub 上一位上一位_Click( ) If n 2 Then n = n 1 工作表行号减工作表行号减1, Call display 将工作表的第将工作表的第n行显示在文本框中行显示在文本框中End Subn n单击“上一位”命令按钮时执行的程序代码10.8 窗体及其应用n nDisplay过程代码Sub display()TextBox1.Value=Cells(n,1)将工作表的第将工作表的第1列中的数据显示在列中的数据显示在TextBox1文本框中文本框中TextBox2.Value=Cells(n,2)TextBox3.Value=Cells(n,3)TextBox
43、4.Value=Cells(n,4)TextBox5.Value=Cells(n,5)TextBox6.Value=Cells(n,6)TextBox7.Value=Cells(n,7)TextBox8.Value=Cells(n,8)End Sub 10.8 窗体及其应用n n单击退出按钮时执行的程序代码Private Sub退出退出_Click() teacher.HideEnd SubPrivate Sub 新教师新教师_Click() While Not (IsEmpty(Cells(n,1) 定位到工作表定位到工作表的最后一行的最后一行 n=n+1 Wend displayEnd S
44、ubn n单击“新教师”按钮时执行的程序代码10.8 窗体及其应用n n建立调用窗体的控件10.9 对话框操作n n1 MsgBox函数n功能nMsgBox对话框函数可用于显示一些简单的信息,可以用该函数向用户显示一些提示信息。n函数用法nMsgBox(prompt, buttons , title , helpfile, context)n其中,prompt是一个字符串,显示在对话框中的消息。nbuttons是一个常数,指定显示按钮的数目及形式,使用的图标样式。ntitle表示对话框的标题。 10.9 对话框操作n nbuttonsbuttons参数的常数值参数的常数值 按钮选项的常数按钮选
45、项的常数代表的数值代表的数值功功 能能vbOKOnly0只显示只显示 OK 按钮按钮VbOKCancel1显示显示 OK 及及 Cancel 按钮按钮VbAbortRetryIgnore 2显示显示 Abort、Retry 及及 Ignore 按钮按钮VbYesNoCancel3显示显示 Yes、No 及及 Cancel 按钮按钮VbYesNo4显示显示 Yes 及及 No 按钮按钮VbRetryCancel5显示显示 Retry 及及 Cancel 按钮按钮10.9 对话框操作n n对话框的图标常数对话框的图标常数 按钮常数按钮常数代表的数值代表的数值功功 能能VbRetryCancel 5
46、显示显示 Retry 及及 Cancel 按钮按钮VbCritical16显示显示 Critical Message 图标图标VbQuestion32显示显示 Warning Query 图标图标VbExclamation 48显示显示 Warning Message 图标图标VbInformation 64显示显示 Information Message 图标图标10.9 对话框操作n nMessageBox函数应用事例一Sub Msg1() MsgBox 第一次使用对话框第一次使用对话框 a = Sin(35) b = MsgBox(a, vbOKCancel)End Sub运行结果运行结
47、果10.9 对话框操作n nMessageBox函数应用事例二Sub Msg2() Dim Msg, Style, Title, Response, MyString Msg = 警告,系统有严重错误!警告,系统有严重错误! + Chr(13) & Chr(10) _ + 想继续进行下面的操作想继续进行下面的操作? Style = vbYesNo + vbCritical 定义按钮。同时显示按钮、图标定义按钮。同时显示按钮、图标 Title = 警告警告 定义标题定义标题 Response = MsgBox(Msg, Style, Title) 调用调用MsgBox函数函数 If Respon
48、se = vbYes Then 用户按下用户按下“是是” MyString = Yes 完成某操作完成某操作 Else 用户按下用户按下“否否” MyString = No 完成某操作完成某操作 End IfEnd Sub 10.9 对话框操作n n2 InputBox函数 n功能nInputBox函数可以接收用户的输入信息,而且可以将输入信息写入Excel工作表中。n用法nInputBox (prompt, title , default , xpos , ypos , helpfile, context) n其中其中nprompt是出现在输入对话框中的提示信息是出现在输入对话框中的提示信息
49、 ntitle是输入对话框的标题是输入对话框的标题nxpos,ypos指定输入文本框中指定输入文本框中InputBox中的坐标位置中的坐标位置 nHelpfile、context指定该对话框的帮助信息。指定该对话框的帮助信息。 10.9 对话框操作n nInput函数应用举例Sub ss() Worksheets(Sheet1).Activate Dim Message,Titl1,Default,MyValue Message= 请输入用户名请输入用户名设置提示信息设置提示信息 Title=用户名用户名设置标题设置标题 Default=张三英张三英设置默认值设置默认值 MyValue=Inp
50、utBox(Message,Title,Default)用变量作参数调用用变量作参数调用InputBox函数函数 pass=InputBox(请输入密码请输入密码,密码密码)直接调用直接调用InputBox函数输入函数输入用户密码用户密码 If pass=111111 Then Cells(1,1)= 用户名用户名 Cells(1,2)= 密码密码 Cells(2,1)= MyValue Cells(2,2)= pass Else MsgBox(密码不正确,你无权进入本系统密码不正确,你无权进入本系统) End IfEnd Sub 10.9 对话框操作n nSs函数的运行结果n该函数运行时将显
51、示下示两个对话框,将根据用户输入进行用户名与用户密码的判定,然后将结果写入工作表中。10.10 自定义菜单及自定义工具n n1 菜单简介菜单简介n菜单和工具栏可用于执行Excel命令。菜单显示了一系列命令。大多数菜单位于菜单栏中,菜单栏常在屏幕的顶部。在菜单中有各种不同的标记。暂不可用的菜单暂不可用的菜单将弹出对话框的菜单将弹出对话框的菜单具有相级菜单具有相级菜单下面还有菜单项下面还有菜单项10.10 自定义菜单及自定义工具n n2 修改系统菜单 nExcel的菜单和工具栏可以随时修改系统菜单,如删除其中从不使用的菜单项,增加需要的菜单项,或者在系统菜单中添加自定义菜单项 。n修改方法是选择“
52、工具”|“自定义”菜单项 ,在弹出下示对话框后,就可以进行各种修改了。10.10 自定义菜单及自定义工具n n3 在系统菜单中添加自定义菜单n 修改的方法参考教材10.10 自定义菜单及自定义工具n n4 用VBA创建自定义菜单 n认识菜单的各组成部分10.10 自定义菜单及自定义工具n n建立VBA自定义菜单的步骤,以建立教师管理工作薄的菜单为例n1)建立菜单栏nMenuBars.Add 教师管理n2)在菜单栏中建立菜单nMenuBars(教师管理).Menus.Add 学生管理(&S)n MenuBars(教师管理).Menus.Add 教师管理(&T)n MenuBars(教师管理).M
53、enus.Add 成绩管理(&M)n MenuBars(教师管理).Menus.Add 查询(&P)n MenuBars(教师管理).Menus.Add 学籍管理(&D)n MenuBars(教师管理).Menus.Add 系统维护(&U)n MenuBars(教师管理).Menus.Add 帮助系统(&H) 10.10 自定义菜单及自定义工具3 3)建立菜单项,并指定各菜单项的运行宏)建立菜单项,并指定各菜单项的运行宏)建立菜单项,并指定各菜单项的运行宏)建立菜单项,并指定各菜单项的运行宏 设置设置设置设置“ “学生管理学生管理学生管理学生管理” ”中的每个菜单项中的每个菜单项中的每个菜单项
54、中的每个菜单项MenuBars(教师管理教师管理).Menus(学生管理学生管理(&S).MenuItems.Add 新生入学新生入学, xsMenuBars(教师管理教师管理).Menus(学生管理学生管理(&S).MenuItems.Add 降级降级, jjMenuBars(教师管理教师管理).Menus(学生管理学生管理(&S).MenuItems.Add -MenuBars(教师管理教师管理).Menus(学生管理学生管理(&S).MenuItems.Add 处分处分, cfMenuBars(教师管理教师管理).Menus(学生管理学生管理(&S).MenuItems.Add 毕业毕业
55、, byMenuBars(教师管理教师管理).Menus(学生管理学生管理(&S).MenuItems.Add 退出系统退出系统, quit“设置设置“教师管理教师管理”中的每个菜单项中的每个菜单项MenuBars(教师管理教师管理).Menus(教师管理教师管理(&T).MenuItems.Add 男教师男教师, manMenuBars(教师管理教师管理).Menus(教师管理教师管理(&T).MenuItems.Add 女教师女教师, womanMenuBars(教师管理教师管理).Menus(教师管理教师管理(&T).MenuItems.Add -MenuBars(教师管理教师管理).M
56、enus(教师管理教师管理(&T).MenuItems.Add 讲师讲师, jsMenuBars(教师管理教师管理).Menus(教师管理教师管理(&T).MenuItems.Add 教授教授, jsoMenuBars(教师管理教师管理).Menus(教师管理教师管理(&T).MenuItems.Add 副教授副教授, fjso10.10 自定义菜单及自定义工具n nQuit宏将删除自定义菜单,恢复系统菜单Sub quit() For k=1 To MenuBars.Count If MenuBars(k).Caption=教师管理教师管理Then For i=MenuBars(教师管理教师管
57、理).Menus.Count To 1 Step -1 For j=MenuBars(教师管理教师管理).Menus(i) MenuItems.Count To Step-1 MenuBars(教师管理教师管理).Menus(i).MenuItems(j).Delete Next j MenuBars(教师管理教师管理).Nenus(i).Delete Next i End If Next k MenuBars(教师管理教师管理).Delete MenuBars(xlWorksheet).Reset MenuBars(xlWorksheet).ActivateEnd Sub10.10 自定义菜
58、单及自定义工具n nVBA命令建立的菜单10.11 VBA自动宏nVBA提供了Auto_Open和Auto_Close两个非常有用的自动运行宏。nAuto_Open将在打开工作簿时被自动执行,这对于许多自动化工作的实现非常有用。 nAuto_Close会在关闭工作簿时被自动调用。在用Excel创建应用系统时,将退出系统时需要执行的程序代码写在宏Auto_Close中,是一种较好的方法 10.12 VBA应用实例n n某公司有7 000多职工,他们的工资管理系统是用VFP编写的,其中的工资数据库如图所示 10.12 VBA应用实例n n问题n该公司的财务管理人员在每个月末都要对本月和上月的工资数
59、据进行统计分析,并制作出如图所示的财务报表汇报给上级管理人员。 10.12 VBA应用实例n n解题思路解题思路n n编编写写宏宏将将要要分分析析的的两两个个月月的的从从数数据据库库导导入入到到ExcelExcel工工作作表表中中,并并利利用用宏宏自自动动完完成成各各项项数数据据的的分分析析,并并形形成成报报表表。当当每每个个月月需需要要制制作作报报表表时时,只只需需要要重重新新运运行行宏宏,就就能能自自动动从从指指定定位位置置导导入入两两月月工工资资,并并自自动动得得出出分分析析报告。具体实现思路如下。报告。具体实现思路如下。n利用VFP的数据导出功能将本月和上月工资导出到两个VFP的 DB
60、F数 据 表 中 , 将 它 们 保 存 在 某 个 目 录 中 , 如“C:ApsdGZ” 目录,名字分别为“本月.dbf”和“上月.dbf”n在 Excel中 , 以 录 制 的 方 式 记 录 两 个 宏 , 用 于 将“C:ApsdGZ” 目录中的“本月.dbf”和“上月.dbf”数据表导入到EXCEL中。宏的名字分别为“本月工资”和“上月工资”。n编写宏“Sub 分析数据”分析本月工资和上月工资表中的数据,形成需要的分析数据,并保存在数组中。10.12 VBA应用实例n编写计算百分比的宏“sub 计算百分比”,用于计算两月各项数据对比后的增加百分比。n编写输出数据的宏“Sub 输出结果”,用于将保存在数组中的计算结果输出到Excel工作表中。n另外,还有一个供其它宏调用的计算人数的宏“计算人数”n各宏之间通过数组传递数据。n在一个工作表中建立调度上述宏的菜单或命令按钮。在一个工作表中建立调度上述宏的菜单或命令按钮。10.12 VBA应用实例n n通过宏导入到Excel中的数据10.12 VBA应用实例n n通过宏作出的分析报告10.12 VBA应用实例n n总控工作表The End