




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第10章模块,10.1模块的基础知识10.2VBA程序设计基础10.3模块的创建10.4宏转换为VBA代码,.,2,10.1模块的基础知识,10.1.1模块的概念1.模块模块是一种重要的Access数据库对象,是用VBA语言的声明和过程编写的程序代码段,它们是作为一个整体被存储和使用的。利用模块可以将各种数据库对象连接起来,从而使其构成一个完整的系统。模块有两个基本类型:类模块和标准模块。类模块:包含类定义的模块,包括属性和方法的定义。窗体和报表模块都是类模块,也可以自定义类模块。,.,3,标准模块:包含在数据库窗口的模块对象列表中,是不与任何对象相关联的通用过程。这些过程可以在数据库中的任何位置被直接调用执行。2.模块与宏的区别使用宏不需要编程,使用模块需要编程。模块的运行速度远比宏的运行速度要快。VBA包含有宏的所有等效语句,还可以创建自己的函数。模块在数据库维护、错误信息处理、内置函数的使用及创建处理对象等方面优于宏。,.,4,3.过程模块是由一个或多个过程组成的,模块中的每一个过程都可以是一个函数过程或是一个子程序过程。过程是用VisualBasic语言编写的程序代码段,由声明和一系列需要执行的操作语句组成。过程是模块的一个单元,可以被放置在标准模块或类模块中。过程分有Sub过程和function过程两类,区别在于Sub过程没有返回值,function过程有返回值。,.,5,(1)Sub过程:执行一系列的操作或运算,但是没有返回值。定义格式:Private|PublicStaticSub过程名(参数列表)语句组EndSub参数列表格式:ByVal参数名As类型,调用格式:Call过程名(实参)或过程名实参,.,6,(2)事件过程是把事件和过程合为一体,利用事件驱动机制来启动执行过程。格式:PrivateSub对象名_事件名(参数列表)事件响应代码EndSub调用方法:事件过程除了由系统自动来调用之外,也可以将它看作一个普通的子程序在程序中用代码来调用,调用语法没有特殊之处,如:Callcomadd_Click,.,7,(3)Function过程也称为函数,执行结果会返回一个值。可以使用系统函数,也可以自定义函数。定义格式:Private|PublicStaticFunction过程名(参数列表)as返回值类型语句组EndFunction调用方法:可以直接调用,或作为表达式的一部分实现调用。说明:函数是特殊的过程,注意与过程的区别就可以了:函数有数据类型,即返回值的类型,缺省为Variant;要给函数名本身赋值,这个值就是返回值;如果象调用过程一样调用函数,语法上是可以的,只是放弃了返回结果。,.,8,10.1.2VisiualBasic开发环境1.打开VisualBasic编辑器的方法打开VisiualBasic编辑器有如下几种方法:创建新的标准模块,可选择数据库窗口上的“模块”对象,然后单击数据库窗口工具栏上的“新建”按钮,则在VBA编辑器中创建了一个空白模块,即可输入程序代码。如果已有一个标准模块,可选择数据库窗口上的“模块”对象,凡在模块对象列表中的模块,都可以在VBA编辑器中打开。,.,9,对属于窗体或报表的模块,可以打开窗体或报表的设计视图,单击设计工具栏上的“代码”按钮,即可在VBA编辑器中打开模块,并显示模块的开始部分。直接定位到窗体或报表上指定对象的事件处理过程,具体做法是:单击属性窗口的“事件”页中某个事件框的“生成器”按钮,打开“选择生成器”对话框,选择其中的“代码生成器”选项即可。,.,10,2.VisiualBasic编辑器VisiualBasic编辑器由如下几部分组成:VBA的菜单栏VBA的工具栏工程资源管理器:工程资源管理器,简称工程窗口,列表框所列出的是在应用程序中用到的模块文件。属性窗口:属性窗口中列出了所选对象的各种属性,可按照按字母序和分类序两种格式查看属性。,.,11,代码窗口:是一个开发、调试系统,包含两个组合框,左边是“对象组合框,右边是“过程”组合框。“对象”组合框中列出的是所有可用的对象名称,选择某一对象后,“过程”组合框中会列出该对象所有的事件过程。立即窗口:可以查看一行的VBA代码的执行结果,显示表达式的值,查看控件或字段的值。打开“立即”窗口有以下2种方法:方法一:按组合键CTRL+G,随时可以显示“立即”窗口。方法二:单击“调试”工具栏上的“立即窗口”按钮。,.,12,10.2VBA程序设计基础,10.2.1数据类型、常量及变量1.常用的数据类型,.,13,2.常量常量是指在程序运行的过程中其值始终不变的量,VBA支持以下几种类型的常量。数值常量:由数字组成,如:45.3,12345。字符常量:由定界符“和”括起来的符号串组成,如:“Access2002”。日期常量:由定界符#括起来,如#1/1/2002#。,.,14,符号常量:用于替代数值或字符串。符号常量是需要声明定义的。使用const语句可以定义常量,该常量的值不能修改或重新赋值,也不能创建与固有常量同名的常量,如:constPI=3.14159265。固有常量:可以在宏或者VB中使用,VBA中的固有常量以“vb”开头,例如vbcurrency,Access中的固有常量以“ac”开头。可以使用对象浏览器查看对象库中的固有常量。系统定义常量:True,False和Null。,.,15,3.变量(1)变量的命名变量名是由英文字母开头的字符和数字串组成的,且字母不区分大小写,长度不超过255个字符。变量名中不允许出现空格、等符号。变量名不能用VBA的关键字。(2)变量声明格式:Dim变量名1as数据类型1,变量名2as数据类型2,,变量名Nas数据类型N说明:如果变量不声明就使用,也是允许的,VBA会默认该变量为Variant数据类型。,.,16,(3)变量的作用域局部变量:用Dim或Private声明的变量是局部变量,其作用域或者是所属的子程序范围,或者是其所属的模块的范围。全局变量:如果声明变量时使用Public,则该变量是全局变量,其作用域是数据库中的所有过程。,.,17,4.数组变量(1)静态数组数组声明格式:Dim数组名(维数定义)as类型其中维数定义及各维的范围是:一维数组:to二维数组:to,to类推可以定义更高维的数组.如:Dima(1to9)asintegerDimb(3,1to4)asdouble注意:如果不指定下标下界,默认的缺省值下界为0。,.,18,(2)动态数组动态数组是指数组的长度可以改变,创建方法是:声明一个未指明大小及维数的数组。用Redim语句再次声明数组的长度,即动态数组元素的个数可以变化。若要保存原数组中的值,可以用RedimPreserve语句来扩充数组。如Dima()asintegerRedima(5)【例10-1】定义动态数组。(代码见例10-1(P245).txt),.,19,10.2.2VBA程序设计1.顺序结构语句按程序的书写顺序依次执行各段程序。(1)赋值语句一般格式:变量名=表达式或对象名.属性名=表达式功能:把表达式的值赋给变量,或把表达式的值赋给对象属性。【例10-2】给变量x赋值。【例10-3】为命令按钮Command1.Caption属性设置值。,.,20,(2)数据的输入与输出的格式为:InputBox(提示,标题,缺省值,x坐标位置,y坐标位置)InputBox()函数是输入函数,执行时产生一个对话框,等待用户输入数据,并返回所输入的内容。【例10-4】设计一个程序,由用户输入半径,计算并输出圆周长和圆面积。(代码见例10-4(P246).txt)注意:使用窗体上的控件时,必须使用SetFocus方法使该控件获得焦点。,.,21,2.选择结构语句根据给定的条件进行判断,由判断结果来确定执行哪个分支。(1)条件结构语句单行条件结构语句IfThenElse格式为:If条件表达式Then语句序列1Else语句序列2【例10-5】输入x,计算y的值,并将它赋值给text2。如输入x值,判断若x大于等于0,则y=x(1/2);若x小于0,则y=-x。(代码见例10-5(P247).txt),.,22,使用IIf函数使用IIf函数可以实现一些简单的选择结构。格式:IIf(条件表达式,真部分,假部分)【例10-6】输入x,计算y的值,并将它赋值给text2。(代码见例10-6(P248).txt),.,23,块结构条件语句格式:If(条件)Then语句列1Else语句列2EndIf【例10-7】输入x,计算y的值,并将它赋值给text2。(代码见例10-7(P248).txt),.,24,If语句的嵌套格式:If(条件1)ThenElseIf(条件2)ThenEndIfEndIf,.,25,(2)选择结构语句格式:SelectCase表达式Case表达式值列表1语句1Case表达式值列表2语句2CaseElse语句nEndSelect【例10-8】selectcase语句的应用。如:根据工作分类计算奖金,当工作为第1类时,奖金为工资的10%,当为第2,3类时,奖金为工资的9%,当为第4,5,6类时,奖金为为工资的7%,当为第8类以后,奖金为100,其他情况没有奖金。(代码见例10-8(P249).txt),.,26,3.循环结构语句(1)Do循环Do循环主要用于重复执行一个语句块,重复次数不定。前测型当型循环语句格式:Dowhile条件表达式循环体语句组Loop说明:执行时先测试表达式的值,如果为假,则跳过所有循环语句块,只要表达式为真,循环就一直执行,直至表达式为假时结束。【例10-9】求100之内所有自然数之和。(代码见例10-9(P250).txt),.,27,后测型的当型循环语句格式:Do循环体语句组Loopwhile条件表达式说明:当条件为真时继续执行循环.条件为假时,终止循环.前测型直到循环语句格式:Dountil条件表达式循环体语句组Loop说明:执行时先测试表达式,当条件为假时执行循环体,直到表达式条件为真时结束循环语句。,.,28,后测型直到型循环语句格式:Do循环体语句组Loopuntil条件表达式说明:先执行循环语句块,然后测试条件表达式的值,条件为假时继续执行循环体,直到表达式为真时结束循环【例10-10】求100之内所有自然数之和。(代码见例10-10(P251).txt),.,29,(2)For循环当不知道循环次数时,一般用Do循环,循环次数已知时用For循环最为方便。格式:For循环控制变量=初值表达式To终值表达式Step步长循环体语句组Next循环控制变量【例10-11】求100之内自然数之和。(代码见例10-11(P251).txt)【例10-12】计算1*3*5*7*9。(代码见例10-12(P252).txt),.,30,4.数组的使用【例10-13】计算某组10个同学的总分、平均分。(代码见例10-13(P252).txt)【例10-14】随机产生10个数,按递增顺序进行排序。(代码见例10-14(P252).txt)注意:数组名、数组类型和维数必须与数组声明时的一致,下标值应在数组声明时所指定的范围之内。在同一过程中,数组与简单变量不能同名。,.,31,10.3模块的创建,10.3.1创建过程1.创建自定义的Sub过程选择所需要“对象”,打开对应的模块。在代码窗口中键入Sub语句声明该过程,输入过程名、过程参数,在Sub和EndSub之间添加代码。【例10-15】计算长方形面积。(代码见例10-15(P253).txt)2.创建自定义函数打开一个模块,在弹出的代码窗口中用Function语句声明该函数,输入函数名。在Function和EndFunction之间添加代码。,.,32,【例10-16】编写求矩形面积的自定义函数。(代码见例10-16(P254).txt)3.事件过程事件过程是模块的主要内容,用于响应由系统和用户引发的事件,当事件发生时,该事件过程就会被调用。【例10-17】在实训18中创建的“学生”窗体中设计一个模块,当用户修改记录时,要求“学号”字段必须有数据,否则,弹出“学号不能为空!”的消息框。,.,33,10.3.2创建与窗体和报表相关的类模块创建与窗体和报表相关类模块的步骤如下:选择要操作的窗体,从“视图”菜单下选择“代码”命令。从“代码”窗口的“对象”列表中选择对象,从“事件过程”列表框中选择相关的过程名,再添加代码。【例10-18】打开窗体“学生资料窗体”时显示显示一个消息框。【例10-19】使用模块例8-2中创建的将以表格式显示的“学生基本信息报表”以黑白交错的效果显示出来。(代码见例10-19(P256).txt),.,34,10.3.3创建与窗体和报表不相关的类模块【例10-20】创建与窗体或报表不相关的类模块。如创建一个过程用于输入一个数,并用弹出的对话框显示出来的过程,保存为“输入输出”。说明:在“模块窗口”下也可以插入模块。模块创建好之后,在窗体或者报表中进行调用。这里的过程“输入输出”不是事件过程,是自定义过程。10.3.4创建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 店铺经营转让协议8篇
- 2025湖南有色产业投资集团郴州有限责任公司资兴西坌矿业有限公司招聘8人笔试参考题库附带答案详解
- 2025浙江宁波市卓众人力资源服务公司销售业务人员专项招募20人笔试参考题库附带答案详解
- 2025榆林定边县国有企业财务会计人员招聘(10人)笔试参考题库附带答案详解
- 2025年芜湖官陡梦湖产业服务有限公司招聘5人笔试参考题库附带答案详解
- 2025年山东省国控设计集团有限公司招聘3人笔试参考题库附带答案详解
- 2025年合肥市建设工程监测中心有限责任公司社会招聘6人笔试参考题库附带答案详解
- 2025山东潍坊市天成水利建设有限公司招聘30人查看职位笔试参考题库附带答案详解
- 2025四川雅安市宝兴县兴绿林业投资有限公司招聘(第二批)2人笔试参考题库附带答案详解
- 2025内蒙古包钢房产物业集团有限公司招聘35名工作人员笔试参考题库附带答案详解
- 小学教育课件教案雪雕和冰雕的历史与传统
- 新版出口报关单模板
- 员工工资条模板
- 新教科版科学六年级上册知识点
- 初中历史小论文现状分析与写作探讨
- 新疆地方史课件
- 一粒种子旅行
- GB/T 9124-2010钢制管法兰技术条件
- GB 4287-1992纺织染整工业水污染物排放标准
- 腰椎间盘突出症课件
- 桂阳县中小幼教师资格定期注册工作指南专家讲座
评论
0/150
提交评论