版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第8 8章章 模块与模块与VBA编程编程 n 模块是模块是AccessAccess数据库的一个重要对象,数据库的一个重要对象,它以它以VBAVBA语言为基础,以函数过程或子过语言为基础,以函数过程或子过程为单元的集合方式存储。程为单元的集合方式存储。 2本章主要内容:本章主要内容:l模块的基本概念模块的基本概念lVBAVBA程序设计基础程序设计基础l创建模块创建模块l模块的调用及参数传递模块的调用及参数传递lVBAVBA代码的运行与调试代码的运行与调试38.18.1 VBA VBA编程基础编程基础 VBA(Visual Basic for Applications)是广泛流行的可视化应用程
2、序开发语言VB(Visual Basic)的子集 VB语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在Windows平台上;而VBA其编程环境和VBA程序都必须依赖Office应用程序(如Access、Word、Excel等)。48.1.1 8.1.1 面向对象程序设计基本概念面向对象程序设计基本概念1. 1. 对象和类对象和类(1 1)对象)对象 在面向对象的程序设计中,对象是基本元素。在VBA中进行程序设计时,界面上的所有事物都可以被称为对象(2 2)对象的属性)对象的属性 属性就是对象的物理性质、特征 属性值可以在创建对象时设置,也可以在执行程序时通过命令的方式修改,其引
3、用方式为:对象对象名名. .属性名称属性名称5(3 3)对象的方法)对象的方法 对象的方法是指对象所固有的、可以完成某种任务的功能,是对象可以执行的动作。调用格式:对象名对象名. .方法名称方法名称(4 4)对象的事件)对象的事件 事件是一种特定操作。在某个对象上发生或对某个对象发生。事件可以由用户触发,也可以通过系统触发。 为了使得对象在某一事件发生时能够做出所需要的反应,就必须针对这一事件编写相应的代码来完成相应的功能。6对象的三要素对象的三要素 属性、事件和方法构成了对象的三要素,其中属性是属性、事件和方法构成了对象的三要素,其中属性是对象的静态特性,事件和方法是对象的动态特性。对象的静
4、态特性,事件和方法是对象的动态特性。 例如设有例如设有“命令按钮命令按钮”控件名为控件名为Command1Command1,则描述该,则描述该控件控件“高度高度”、“宽度宽度”等属性的引用格式为:等属性的引用格式为: Command1.HeightCommand1.Height, Command1.WidthCommand1.Width, “命令按钮命令按钮”具有移动方法,其引用格式为:具有移动方法,其引用格式为: Command1.Move , Command1.Move , 在命令按钮上单击鼠标时会触发在命令按钮上单击鼠标时会触发“单击单击”事件,其事事件,其事件过程引用格式为:件过程引用
5、格式为: Command1_ClickCommand1_Click()。()。7(5 5)类)类 类是对一组相似对象的性质描述。这些对象具有相同的性质、相同种类的属性以及方法。类是对象的抽象,而对象是类的具体实例。(6 6)DoCmdDoCmd对象对象 DoCmd对象的主要功能是通过调用Access内置的方法,在VBA中实现某些特定的操作。 例如,利用DoCmd对象的OpenForm方法打开“教师信息维护”窗体,语句格式为: DoCmd.OpenForm DoCmd.OpenForm ”教师信息维护教师信息维护”82 2事件过程事件过程 在Access数据库系统里,可以通过两种方式来处理事件响
6、应:一是使用宏对象来设置事件属性;二是为某个事件编写VBA代码过程,完成指定动作。这样的代码过程称为事件过程或事件响应代码。98.1.2 VBA8.1.2 VBA的编程环境的编程环境编写程序可以利用编写程序可以利用Visual BasicVisual Basic编辑器(简称编辑器(简称VBEVBE)。)。1 1启动启动VBAVBA编辑器编辑器(1)通过事件过程启动 (2)通过模块对象启动 (3)通过菜单启动 单击【工具】|【宏】|【Visual Basic编辑器】菜单命令 102.2.认识认识VBEVBE窗口窗口属性窗口属性窗口工程资源管理器窗口工程资源管理器窗口代码窗口代码窗口标准工具栏标准
7、工具栏11属性窗口属性窗口对象框对象框属性列表属性列表工程资源管理器窗口工程资源管理器窗口 12代码窗口代码窗口 过程下拉过程下拉列表框列表框代码框代码框对象下拉对象下拉列表框列表框138.1.3 8.1.3 基本数据类型基本数据类型数据类型关键字类型符占字节数取值范围字符型String与字符串长度有关定长字符串:065535个字符变长字符串:020亿个字符字节型Byte无10255整型Integer%2-3276832767长整型Long&4-21474836482147483647单精度型Single!4负数:-3.402823E38-1.401298E-45正数:1.401298
8、E-453.402823E38双精度型Double#8负数:-1.79769313486231E308-4.94065645841247E-324正数:4.94065645841247E-3241.79769313486232E308小数型Decimal14小数点右边的数字个数为028货币型Currency8-922337203685477.5808922337203685477.5807逻辑型Boolean无2True与False日期型Date无801/01/10012/31/9999对象型Object无4任何对象引用变体型Variant无按需分配 数据是程序处理的对象,是程序的必要组成部分
9、。数据是程序处理的对象,是程序的必要组成部分。不同类型数据的操作方式和取值范围不同,所占存储空不同类型数据的操作方式和取值范围不同,所占存储空间的大小也不同。间的大小也不同。VBA提供了系统定义的标准数据类型,提供了系统定义的标准数据类型,并允许用户根据需要定义自己的数据类型。并允许用户根据需要定义自己的数据类型。 148.1.4 8.1.4 常量、变量与数组常量、变量与数组1.1.常量常量 常量是指不变的数据。常量是指不变的数据。VBAVBA支持支持4 4 种类型种类型的常量:直接常量、符号常量、固有常量和系的常量:直接常量、符号常量、固有常量和系统定义常量。统定义常量。 15符号常量符号常
10、量 符号常量定义的格式为: Const Const as as = ,.,. 说明:格式中尖括号部分为必填内容,中括号部分为选填内容,,表示之前部分可重复。例如: Const PI=3.1415926 dayHours as Byte=10163.3.变量变量 变量是被命名的内存区域,用以临时保存程序运行变量是被命名的内存区域,用以临时保存程序运行过程中需要的数据。过程中需要的数据。变量的命名规则变量的命名规则: :n 以字母或汉字开头,后跟字母、汉字、数字或下划线以字母或汉字开头,后跟字母、汉字、数字或下划线组成的序列,长度不能超过组成的序列,长度不能超过255255个字符个字符n 不能使用
11、不能使用VBVB中的关键字中的关键字n 不区分常量或变量名中的大小写字母不区分常量或变量名中的大小写字母 显式声明变量显式声明变量 Dim Dim As As , , 格式中格式中DimDim是一个是一个VBAVBA命令,此处用于定义变量;命令,此处用于定义变量;AsAs是关键字,此处用于指定变量的数据类型。是关键字,此处用于指定变量的数据类型。 例如:例如:Dim xh as IntegerDim xh as Integer174.4.数组数组 数组也是一个被命名的内存区域,数组中可以包含多个存储单元,每个存储单元都被称为元素,都可存储数据,数组的各元素都应存储相同类型的数据。为了识别数组中
12、不同的元素,数组元素可以通过下标来访问,数组下标默认从0开始。定义数组定义数组。 Dim a(9) As IntegerDim a(9) As Integer本例定义了一个Integer型数组,其下标默认从0开始至9结束,它的第一个元素被记为a(0),第二个元素被记为a(1),依次类推。即该数组可存储10个Integer型数据。18二维数组二维数组( (略略) ) 前面我们定义的数组都属一维数组,即元素下标前面我们定义的数组都属一维数组,即元素下标只有一个。二维数组元素有两个下标,它相当于一张只有一个。二维数组元素有两个下标,它相当于一张由行和列组成的二维表格,第一维下标相当于行,第由行和列组
13、成的二维表格,第一维下标相当于行,第二维下标相当于列。我们这样定义二维数组。二维下标相当于列。我们这样定义二维数组。 Dim b(2,3) As SingleDim b(2,3) As Single 二维数组二维数组sStudentssStudents拥有两个下标,由于默认下标拥有两个下标,由于默认下标从从0 0开始,所以它可以被看成一个开始,所以它可以被看成一个3 3行、行、4 4列的表格。列的表格。19动态数组(略)动态数组(略) 在定义数组时不指定下标,而在程序运行需要时再指定,即数组元素的数量是可动态改变的,这种数组被称作动态数组。 假定我们想用数组sAges存储某班级学生的年龄,由于
14、各班级的学生数量可能不同,因此我们在定义数组时不便指定数组大小,当班级学生数量确定后我们再指定数组的大小(即数组下标范围)。注意:注意:在定义常量、变量或数组时,如果未指定变量类型,系统默认为Variant型数据。208.1.5 8.1.5 运算符与表达式运算符与表达式表达式表达式n 表达式是由常量、变量、函数、运算符和圆括号等表达式是由常量、变量、函数、运算符和圆括号等构成。构成。n VBAVBA提供了丰富的运算符,其中包括算术运算符、提供了丰富的运算符,其中包括算术运算符、连接运算符、比较运算符和逻辑运算符等。连接运算符、比较运算符和逻辑运算符等。n 参与运算的数据被称作操作数。参与运算的
15、数据被称作操作数。n 运算符和操作数据构成表达式。运算符和操作数据构成表达式。218.1.6 8.1.6 常用标准函数常用标准函数函数是VBA内置的具有某种功能的特殊程序。它就象一只黑匣子,接收外部输入的数据并向外部返回一个处理结果。函数的使用格式为: 函数名函数名( (参数参数 , ) ) 如:如:Right(Right(“abcdefabcdef”,2),2)下面的函数功能恰好与它相反。 如:如:Left(Left(山东交通学院山东交通学院,2),2) 228.1.7 8.1.7 输入输出函数和过程输入输出函数和过程VBAVBA与用户之间的直接交互是通过与用户之间的直接交互是通过Input
16、Box()InputBox()函数、函数、MsgBox()MsgBox()函数和函数和MsgBoxMsgBox过程进行的过程进行的 例:输入圆的半径,然后计算圆的面积。例:输入圆的半径,然后计算圆的面积。Public sub mj() const pi=3.1415926 dim r as integer dim s as double r=inputbox(“请输入半径:”) s=pi*r2 debug.print “面积为:”,sEnd sub练习:输入长方形的长和宽,计算其面积练习:输入长方形的长和宽,计算其面积? ?23VBA语法基础按照功能不同,VBA语句可以分成三大类:声明语句:如
17、用于变量、符号常量或程序定义的语句;执行语句:如赋值、程序调用和实现流程控制的语句等;注释语句:主要用于为命令行或程序块进行注解说明,此类语句在程序运行过程中不会产生任何效果(它不会被执行),但在程序设计过程中适当地使用注释语句有利于提高程序的可读性。 VBAVBA注释语句既可以单独放置在一行内,也可以放注释语句既可以单独放置在一行内,也可以放置在某个语句尾部。置在某个语句尾部。248.2 VBA8.2 VBA的流程控制的流程控制8.2.1 8.2.1 顺序控制顺序控制258.2.2 8.2.2 条件语句条件语句1. 1. 单行结构条件语句单行结构条件语句格式:格式:IfIf条件条件ThenT
18、hen语句语句1 1ElseElse语句语句2 2 end ifend if 功能:如果功能:如果“条件条件”成立成立( (其值其值为为TrueTrue或为非或为非0 0值值) ),则执行,则执行“语语句句1 1”,否则,执行,否则,执行“语句语句2 2”。例如:例如:If x y Then z = x - y Else z = y x endif条件条件语句语句2语句语句1TrueFalse26例:输入学生的成绩并判断等级,例:输入学生的成绩并判断等级,大于等于大于等于60分分 为及格,小于为及格,小于60分分为为 不及格?不及格?27例:输入学生的成绩并判断等级,例:输入学生的成绩并判断等
19、级,小于小于60分为分为 不及格,不及格,60到到69分分 为为及格,及格,70到到84分为良好,分为良好,85分以分以上为优秀上为优秀 ?282. 2. 块结构条件语句块结构条件语句 单行结构条件语句中,如果条件分支执行的操作比较复杂,不能在一行书写完毕,可以使用块结构条件语句。块结构条件语句格式如下:IfIf条件条件1 1 Then Then 语句块语句块1 1Else If Else If 条件条件2 2 Then Then 语句块语句块2 2ElseIf ElseIf 条件条件3 3 Then Then 语句块语句块3 3 ElseElse 语句块语句块n nEnd IfEnd If2
20、9课外练习课外练习1.某公司员工工资计算规则如下:正常工作工资每小时50元,月工作时间少于100小时的扣1000元,月工作时间超过160小时的,超过部分加发50%的工资;设计一程序输入某员工的职工号及工作时间计算该员工的工资。303. 3. 多分支结构多分支结构 在VBA中,使用情况语句实现多路分支程序设计,比用If语句更为简单和结构清晰。其一般格式为:Select CaseSelect Case测试表达式测试表达式 Case Case表达式表列表达式表列1 1 语句块语句块1 1 CaseCase表达式表列表达式表列2 2 语句块语句块2 2 Case ElseCase Else 语句块语句
21、块n+1n+1 End SelectEnd Select条件条件1语句块语句块2语句块语句块1TF条件条件2条件条件n语句块语句块n语句块语句块n+1TTFF318.2.3 8.2.3 循环语句循环语句输出5次“ok”?输出20次”ok”?328.2.3 8.2.3 循环语句循环语句 1 1DoLoop循环循环格式格式1 1:Do while Do while 条件条件 Exit DoExit DoLoopLoop338.2.3 8.2.3 循环语句循环语句输出5次ok?Public Sub ok() Dim n As Integer n = 1 Do While n = 5 Debug.Pr
22、int ok, n n = n + 1 LoopEnd Sub348.2.3 8.2.3 循环语句循环语句l求1到5的和?l求1到100的和?l求1到100的奇数和?l求1到100的偶数和?358.2.3 8.2.3 循环语句循环语句l求1到100的奇数和?Public Sub QHJS() Dim n As Integer Dim s as integer n = 1 s=0 Do While n = 99 s=s+n n = n + 2 Loop debug.print sEnd Sub368.2.3 8.2.3 循环语句循环语句2 2For-NextFor-Next循环循环For For
23、 = to to step step Exit for Exit forNextNext378.2.3 8.2.3 循环语句循环语句2 2For-NextFor-Next循环循环【例例】计算计算1+2+3+4+1+2+3+4+99+100+99+100的和。的和。 分析分析 累加数据初值为累加数据初值为1 1,终值为,终值为100100,步长(数据间递变),步长(数据间递变)为为1 1,利用,利用For/NextFor/Next结构很容易实现它。程序代码如下。结构很容易实现它。程序代码如下。Sub Ex8_10()Sub Ex8_10() Dim n As Integer, S As Inte
24、ger Dim n As Integer, S As Integer S = 0 S S = 0 S存储数据累加之和存储数据累加之和 For n = 1 To 100 Step 1For n = 1 To 100 Step 1 S = S + n S = S + n Next Next Debug.Print S= & S Debug.Print S= & SEnd SubEnd Sub38For-Next循环l求1到100的奇数和?l求1到100的偶数和?l求1到10000被5整除但不能被7整除的数的和?39课外练习课外练习l1. 100,5000之间同时满足除以8余6,除以
25、6余4,除以4余2的整数之和。 l从左至右或从有至左读起来都一样的数称为回文数,如1221,343;求1000-9999之间,回文数之和。l编写程序,统计2004000之间的所有满足各位数字之积为42,各位数字之和为12的数的个数。40循环嵌套循环嵌套l分析程序的输出结果?分析程序的输出结果?Public Sub ok() Dim a,b As Integer for a=1 to 4 for b=1 to 5 Debug.Print a,b next nextEnd Sub41循环嵌套循环嵌套l用100元兑换成5元、2元、1元的零钱纸币,共30张,可以有多少种兑换方法?Public Sub
26、ok() Dim x,y,z As Integer n=0 for x=0 to 20 for y=0 to 50 for z=0 to 100 if 5*x+2*y+1*z=100 then n=n+1 end if next next next debug.print “总共有:”,n,”种兑换方法”End Sub42课外练习课外练习l1. 100,5000之间同时满足除以8余6,除以6余4,除以4余2的整数之和。l2.一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第15次落地时,共经过多少米? l3求当n=100时下式的和:s=1+(1+2)+(1+2+3)+
27、.+(1+2+3+.+n)。l4.有15个学生一起买小吃,共花钱40元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?l5.从左至右或从有至左读起来都一样的数称为回文数,如1221,343;求1000-9999之间,回文数之和及个数。43课外练习课外练习l6.求1!+2!+3!+.+9!,9!表示9的阶乘。 l7.求20000以内所有完数之和,完数是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完数(难) 。 l8.求出2,1000以内的素数数目(难) 。 l9.
28、求出2,1000以内的所有素数之和 (难)。 44课外练习课外练习l1. 100,5000之间同时满足除以8余6,除以6余4,除以4余2的整数之和。 l从左至右或从有至左读起来都一样的数称为回文数,如1221,343;求1000-9999之间,回文数之和。l编写程序,统计2004000之间的所有满足各位数字之积为42,各位数字之和为12的数的个数。458.3 8.3 创建创建VBAVBA模块模块 8.3.1 8.3.1 类模块与标准模块类模块与标准模块 模块是VBA代码组织形式,可分为以下两类: 类模块 标准模块。 46模块管理模块管理478.3.2 8.3.2 子过程与函数过程子过程与函数过程 VBA应用程序是由事件过程和通用过程组成的,其中通用过程分为Sub过程(子过程)和Function过程(函数过程)。 1 1子过程的定义子过程的定义 子过程是一系列由 Sub 和 End Sub 语句所包含起来的VBA语句,只执行一个或多个操作,而不返回数值。 一般语法格式如下:StaticPrivate|PublicSub子过程名() 语句块 Exit Sub 语句块 End Sub482 2函数过程的定义函数过程的定义 函数过程通常情况下称为函数,是一系列由 Function 和 End Function 语句所包含起来的 VBA语句。Function 过程和 Sub 过程很类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山西太原市太航医院招聘57人笔试模拟试题及答案解析
- 2026湖北武汉市武昌医院卫生专业技术岗位招聘笔试参考题库及答案解析
- 统计学统计学第2章数据的描述
- 2026广东省安全生产和应急管理科学技术研究院博士后创新实践基地2026年博士后研究人员招聘笔试参考题库及答案解析
- 必考100道传统文化知识测试题
- 2026广西南宁兴宁区虹桥幼儿园招聘1人笔试模拟试题及答案解析
- 主题阅读1-3:科学技术类 环境保护类 自然生态类(原卷版)-2026年中考语文一轮复习现代文阅读
- 2025年重庆对外经贸学院单招综合素质考试题库及答案解析
- 2026浙江温州市平阳县直属人力资源发展有限公司招聘2名酒店管理人员考试备考试题及答案解析
- 资深管理者的职场管理经验分享【课件文档】
- 物业小区控烟监督制度
- 2026年郑州市检验检测有限公司公开招聘19人笔试备考题库及答案解析
- 2025年11月中国人民财产保险股份有限公司临海支公司招考笔试历年典型考点题库附带答案详解试卷2套
- 2025年内蒙古建筑职业技术学院单招职业技能考试试题及答案解析
- 多模式镇痛临床实践与应用
- 2026吉林农业大学三江实验室办公室招聘工作人员笔试备考试题及答案解析
- 农田水利工程施工组织设计范例
- 脑中风科普知识讲座
- 2026年官方标准版离婚协议书
- 化验室复工安全培训课件
- 世界现代设计史第二版第三章现代设计的前奏课件
评论
0/150
提交评论