版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第8章模块与VBA编程
模块是Access数据库的一个重要对象,它以VBA语言为基础,以函数过程或子过程为单元的集合方式存储。
2本章主要内容:模块的基本概念VBA程序设计基础创建模块模块的调用及参数传递VBA代码的运行与调试38.1
VBA编程基础VBA(VisualBasicforApplications)是广泛流行的可视化应用程序开发语言VB(VisualBasic)的子集
VB语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在Windows平台上; 而VBA其编程环境和VBA程序都必须依赖Office应用程序(如Access、Word、Excel等)。48.1.1面向对象程序设计基本概念1.对象和类(1)对象
在面向对象的程序设计中,对象是基本元素。在VBA中进行程序设计时,界面上的所有事物都可以被称为对象(2)对象的属性属性就是对象的物理性质、特征 属性值可以在创建对象时设置,也可以在执行程序时通过命令的方式修改,其引用方式为:对象名.属性名称5(3)对象的方法对象的方法是指对象所固有的、可以完成某种任务的功能,是对象可以执行的动作。调用格式:对象名.方法名称(4)对象的事件事件是一种特定操作。在某个对象上发生或对某个对象发生。事件可以由用户触发,也可以通过系统触发。。为了使得对象在某一事件发生时能够做出所需要的反应,就必须针对这一事件编写相应的代码来完成相应的功能。6对象的三要素
属性、事件和方法构成了对象的三要素,其中属性是对象的静态特性,事件和方法是对象的动态特性。
例如设有“命令按钮”控件名为Command1,则描述该控件“高度”、“宽度”等属性的引用格式为:
Command1.Height,Command1.Width,
“命令按钮”具有移动方法,其引用格式为:
Command1.Move,
在命令按钮上单击鼠标时会触发“单击”事件,其事件过程引用格式为:
Command1_Click()。7(5)类类是对一组相似对象的性质描述。这些对象具有相同的性质、相同种类的属性以及方法。类是对象的抽象,而对象是类的具体实例。(6)DoCmd对象
DoCmd对象的主要功能是通过调用Access内置的方法,在VBA中实现某些特定的操作。例如,利用DoCmd对象的OpenForm方法打开“教师信息维护”窗体,语句格式为:
DoCmd.OpenForm”教师信息维护”82.事件过程
在Access数据库系统里,可以通过两种方式来处理事件响应:一是使用宏对象来设置事件属性;二是为某个事件编写VBA代码过程,完成指定动作。这样的代码过程称为事件过程或事件响应代码。98.1.2VBA的编程环境编写程序可以利用VisualBasic编辑器(简称VBE)。1.启动VBA编辑器(1)通过事件过程启动(2)通过模块对象启动(3)通过菜单启动单击【工具】|【宏】|【VisualBasic编辑器】菜单命令102.认识VBE窗口属性窗口工程资源管理器窗口代码窗口标准工具栏11属性窗口对象框属性列表工程资源管理器窗口12代码窗口过程下拉列表框代码框对象下拉列表框138.1.3基本数据类型数据类型关键字类型符占字节数取值范围字符型String$与字符串长度有关定长字符串:0~65535个字符变长字符串:0~20亿个字符字节型Byte无10~255整型Integer%2-32768~32767长整型Long&4-2147483648~2147483647单精度型Single!4负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E38双精度型Double#8负数:-1.79769313486231E308~-4.94065645841247E-324正数:4.94065645841247E-324~1.79769313486232E308小数型Decimal14小数点右边的数字个数为0~28货币型Currency@8-922337203685477.5808~922337203685477.5807逻辑型Boolean无2True与False日期型Date无801/01/100~12/31/9999对象型Object无4任何对象引用变体型Variant无按需分配
数据是程序处理的对象,是程序的必要组成部分。不同类型数据的操作方式和取值范围不同,所占存储空间的大小也不同。VBA提供了系统定义的标准数据类型,并允许用户根据需要定义自己的数据类型。148.1.4常量、变量与数组1.常量常量是指不变的数据。VBA支持4种类型的常量:直接常量、符号常量、固有常量和系统定义常量。15符号常量符号常量定义的格式为:
Const<常量名>[as<数据类型>]=<数据>[,...]
说明:格式中尖括号部分为必填内容,中括号部分为选填内容,[,…]表示之前部分可重复。例如:ConstPI=3.1415926dayHoursasByte=10163.变量
变量是被命名的内存区域,用以临时保存程序运行过程中需要的数据。 变量的命名规则:
以字母或汉字开头,后跟字母、汉字、数字或下划线组成的序列,长度不能超过255个字符不能使用VB中的关键字不区分常量或变量名中的大小写字母显式声明变量
Dim<变量名>[As<数据类型>][,…]
格式中Dim是一个VBA命令,此处用于定义变量;As是关键字,此处用于指定变量的数据类型。
例如:DimxhasInteger174.数组数组也是一个被命名的内存区域,数组中可以包含多个存储单元,每个存储单元都被称为元素,都可存储数据,数组的各元素都应存储相同类型的数据。为了识别数组中不同的元素,数组元素可以通过下标来访问,数组下标默认从0开始。定义数组。
Dima(9)AsInteger本例定义了一个Integer型数组,其下标默认从0开始至9结束,它的第一个元素被记为a(0),第二个元素被记为a(1),依次类推。即该数组可存储10个Integer型数据。18二维数组(略)
前面我们定义的数组都属一维数组,即元素下标只有一个。二维数组元素有两个下标,它相当于一张由行和列组成的二维表格,第一维下标相当于行,第二维下标相当于列。我们这样定义二维数组。
Dimb(2,3)AsSingle
二维数组sStudents拥有两个下标,由于默认下标从0开始,所以它可以被看成一个3行、4列的表格。19动态数组(略)
在定义数组时不指定下标,而在程序运行需要时再指定,即数组元素的数量是可动态改变的,这种数组被称作动态数组。假定我们想用数组sAges存储某班级学生的年龄,由于各班级的学生数量可能不同,因此我们在定义数组时不便指定数组大小,当班级学生数量确定后我们再指定数组的大小(即数组下标范围)。注意:在定义常量、变量或数组时,如果未指定变量类型,系统默认为Variant型数据。208.1.5运算符与表达式表达式表达式是由常量、变量、函数、运算符和圆括号等构成。VBA提供了丰富的运算符,其中包括算术运算符、连接运算符、比较运算符和逻辑运算符等。参与运算的数据被称作操作数。运算符和操作数据构成表达式。218.1.6常用标准函数函数是VBA内置的具有某种功能的特殊程序。它就象一只黑匣子,接收外部输入的数据并向外部返回一个处理结果。函数的使用格式为:
函数名(参数[,…])
如:Right(“abcdef”,2)
下面的函数功能恰好与它相反。如:Left("山东交通学院",2)
228.1.7输入输出函数和过程VBA与用户之间的直接交互是通过InputBox()函数、MsgBox()函数和MsgBox过程进行的
例:输入圆的半径,然后计算圆的面积。Publicsubmj()constpi=3.1415926dimrasintegerdimsasdoubler=inputbox(“请输入半径:”)s=pi*r^2debug.print“面积为:”,sEndsub练习:输入长方形的长和宽,计算其面积?23VBA语法基础按照功能不同,VBA语句可以分成三大类:◆声明语句:如用于变量、符号常量或程序定义的语句;◆执行语句:如赋值、程序调用和实现流程控制的语句等;◆注释语句:主要用于为命令行或程序块进行注解说明,此类语句在程序运行过程中不会产生任何效果(它不会被执行),但在程序设计过程中适当地使用注释语句有利于提高程序的可读性。
VBA注释语句既可以单独放置在一行内,也可以放置在某个语句尾部。248.2VBA的流程控制8.2.1顺序控制258.2.2条件语句1.单行结构条件语句格式:If〈条件〉Then〈语句1〉[Else〈语句2〉]endif
功能:如果“条件”成立(其值为True或为非0值),则执行“语句1”,否则,执行“语句2”。例如:Ifx>yThenz=x-yElsez=y–xendif条件语句2语句1TrueFalse26例:输入学生的成绩并判断等级,大于等于60分为及格,小于60分为不及格?27例:输入学生的成绩并判断等级,小于60分为不及格,60到69分为及格,70到84分为良好,85分以上为优秀?282.块结构条件语句
单行结构条件语句中,如果条件分支执行的操作比较复杂,不能在一行书写完毕,可以使用块结构条件语句。块结构条件语句格式如下:
If〈条件1〉Then
〈语句块1〉
[ElseIf〈条件2〉Then
〈语句块2〉]
[ElseIf〈条件3〉Then
〈语句块3〉]
……
[Else
〈语句块n〉]
EndIf29课外练习1.某公司员工工资计算规则如下:正常工作工资每小时50元,月工作时间少于100小时的扣1000元,月工作时间超过160小时的,超过部分加发50%的工资;设计一程序输入某员工的职工号及工作时间计算该员工的工资。303.多分支结构
在VBA中,使用情况语句实现多路分支程序设计,比用If语句更为简单和结构清晰。其一般格式为:
SelectCase〈测试表达式〉
Case〈表达式表列1〉
〈语句块1〉]
[Case〈表达式表列2〉
〈语句块2〉]
…
[CaseElse
〈语句块n+1〉]
EndSelect
条件1语句块2语句块1TF条件2条件n语句块n语句块n+1TTFF318.2.3循环语句输出5次“ok”?输出20次”ok”?328.2.3循环语句
1.Do…Loop循环格式1:Dowhile条件
[<循环体>] [ExitDo]Loop338.2.3循环语句输出5次ok?PublicSubok()DimnAsIntegern=1DoWhilen<=5Debug.Print"ok",nn=n+1LoopEndSub348.2.3循环语句求1到5的和?求1到100的和?求1到100的奇数和?求1到100的偶数和?358.2.3循环语句求1到100的奇数和?PublicSubQHJS()DimnAsIntegerDimsasintegern=1s=0DoWhilen<=99s=s+nn=n+2Loopdebug.printsEndSub368.2.3循环语句2.For-Next循环For<循环变量>=<初值>to<终值>[step<步长>][<循环体>][Exitfor]Next[<循环变量>]378.2.3循环语句2.For-Next循环【例】计算1+2+3+4+……+99+100的和。[分析]累加数据初值为1,终值为100,步长(数据间递变)为1,利用For/Next结构很容易实现它。程序代码如下。SubEx8_10()DimnAsInteger,SAsIntegerS=0'S存储数据累加之和
Forn=1To100Step1S=S+nNextDebug.Print"S="&SEndSub38For-Next循环求1到100的奇数和?求1到100的偶数和?求1到10000被5整除但不能被7整除的数的和?39课外练习1.[100,5000]之间同时满足除以8余6,除以6余4,除以4余2的整数之和。从左至右或从有至左读起来都一样的数称为回文数,如1221,343;求1000-9999之间,回文数之和。编写程序,统计200~4000之间的所有满足各位数字之积为42,各位数字之和为12的数的个数。40循环嵌套分析程序的输出结果?PublicSubok()Dima,bAsIntegerfora=1to4forb=1to5Debug.Printa,bnextnextEndSub41循环嵌套用100元兑换成5元、2元、1元的零钱纸币,共30张,可以有多少种兑换方法?PublicSubok()Dimx,y,zAsIntegern=0forx=0to20fory=0to50forz=0to100if5*x+2*y+1*z=100thenn=n+1endifnextnextnextdebug.print“总共有:”,n,”种兑换方法”EndSub42课外练习1.[100,5000]之间同时满足除以8余6,除以6余4,除以4余2的整数之和。2.一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第15次落地时,共经过多少米?3求当n=100时下式的和:s=1+(1+2)+(1+2+3)+......+(1+2+3+......+n)。4.有15个学生一起买小吃,共花钱40元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?5.从左至右或从有至左读起来都一样的数称为回文数,如1221,343;求1000-9999之间,回文数之和及个数。43课外练习6.求1!+2!+3!+...+9!,9!表示9的阶乘。7.求20000以内所有完数之和,"完数"是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完数(难)。8.求出[2,1000]以内的素数数目(难)。9.求出[2,1000]以内的所有素数之和(难)。44课外练习1.[100,5000]之间同时满足除以8余6,除以6余4,除以4余2的整数之和。从左至右或从有至左读起来都一样的数称为回文数,如1221,343;求1000-9999之间,回文数之和。编写程序,统计200~4000之间的所有满足各位数字之积为42,各位数字之和为12的数的个数。458.3创建VBA模块
8.3.1类模块与标准模块模块是VBA代码组织形式,可分为以下两类:
◆类模块
◆标准模块。
46模块管理478.3.2子过程与函数过程VBA应用程序是由事件过程和通用过程组成的,其中通用过程分为Sub过程(子过程)和Function过程(函数过程)。
1.子过程的定义子过程是一系列由Sub和EndSub语句所包含起来的VBA语句,只执行一个或多个操作,而不返回数值。一般语法格式如下:[Static][Private|Public]Sub子过程名([<形参表列>])
语句块[ExitSub]语句块
EndSub482.函数过程的定义
函数过程通常情况下称为函数,是一系列由Function和EndFunction语句所包含起来的VBA语句。Function过程和S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省深圳市南外集团中考一模语文试题(含答案)
- 大学生对量子计算在未来信息技术中颠覆性影响课题报告教学研究课题报告
- 2026浙江湖州师范大学招聘辅导员3人备考题库附答案详解(能力提升)
- 2026江苏南京体育学院招聘专职辅导员8人备考题库含答案详解(典型题)
- 2026重庆市大足区国衡商贸有限责任公司招聘派遣制人员1人备考题库附答案详解(基础题)
- 2026中国铁建大桥工程局集团有限公司招聘30人备考题库及答案详解参考
- 2026杭州市上城区望江街道办事处编外招聘3人备考题库含答案详解(完整版)
- 2026中国中煤华东分公司第三批招聘56人备考题库含答案详解(预热题)
- 人教八下数学5月学情自测卷02(人教版第19-23章)(答案版)
- 2026文化和旅游部直属事业单位招聘应届毕业生93人(三)考试备考题库及答案解析
- 2026福建福州开大学川智慧教育科技有限公司招聘财务主管笔试参考题库及答案解析
- 2026下半年湖南益阳市资阳区事业单位招聘工作人员16人易考易错模拟试题(共500题)试卷后附参考答案
- 2026浙江杭州市西湖区人民政府西溪街道办事处招聘编外合同制工作人员2人笔试模拟试题及答案解析
- 环氧彩砂自流平地坪施工及验收规范
- 2026年科目1驾驶技术模拟题库及完整答案详解
- 六化建设培训
- 2026年甘肃省平凉市辅警人员招聘考试真题解析含答案
- TSG08-2026《特种设备使用管理规则》全面解读课件
- 《2026年化学制药企业安全风险防控专项工作方案》解读
- 中学生面试礼仪培训
- 四川绵阳科技城发展投资(集团)有限公司招聘笔试题库2026
评论
0/150
提交评论