




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章模块与VBA编程,LOGO,章节讲课顺序,7,1,3,5,2,4,6,数据类型,8,运算符与表达式,语法基础,与窗体结合,常量、变量与数组,函数,VBA程序结构,过程调用与参数传递,章节讲课顺序,数据类型,1,常量、变量和数组,1常量或变量的命名规则以字母或汉字开头,后跟字母、汉字、数字或下划线组成的序列,长度不能超过255个字符不能使用VB中的关键字不区分常量或变量名中的大小写字母2.常量常量是指不变的数据。VBA支持4种类型的常量:直接常量、符号常量、固有常量和系统定义常量。,2,直接常量:直接使用的数值或字符串值常量。如3.1415926,“HELLO”,12等。,固有常量:VBA定义的内部符号常量。如vbRed代表“红色”,vbCrLf代表“回车换行符”等。,系统定义常量:Access包含一些启动时就建立的系统常量。如True、False和Null等。,符号常量:对于使用频率较高的直接常量,可以用符号常量形式来表示。符号常量定义的一般格式如下:Const常量名as数据类型=常量值例如:ConstPI=3.1415926ConstMT=“HELLO”ConstBDay=#2006/1/27#,常量,关于Access的固有常量,ACCESS有以下几种类型的固有常量:操作常量、DAO常量、事件过程常量、关键字常量、RunCommand方法常量,安全常量、VBA常量和VarType函数常量。,变量,变量是被命名的内存区域,用以临时保存程序运行过程中需要的数据。在程序运行过程中,变量存储的数据可以发生变化。在程序中使用变量前,一般应先声明变量名及其数据类型,系统根据所做的声明为变量分配存储单元,在VBA中可以显式或隐式声明变量及其类型。显式声明变量格式:DimAs,格式中Dim是一个VBA命令,此处用于定义变量;As是关键字,此处用于指定变量的数据类型。例如:DimxhasIntegerDimAasString,BasCurrency,CasInteger,隐式声明变量,如果一个变量未经声明便直接使用,称为隐式声明。使用时,系统会默认为该变量是变体类型(Variant)。这种声明方式不但增加程序运行的负担,而且极容易出现数据运算问题,造成程序出错。不推荐!,给变量赋值,“=”格式:=A=123:bs=“小蚂蚱“功能:定义了的变量,在使用时,可以给它赋值。举例:REM使用变量举例DIMAASINTEGERDIMBSASSTRINGA=123BS=“小蚂蚱”Debug.PrintA,BS,变量的应用范围,变量也有3个范围级别:过程级别、私有模块级别和公共模块级别。1)过程级别范围变量的定义在过程中,只有在声明此变量的过程中才可以使用的变量称为局部变量。用户可以使用Dim或Static(静态)关键字来定义这些变量。DimXasSingleStaticYasSingle使用Dim定义的局部变量只有在它所在的过程运行时才会有值,而使用Static定义的局部变量在整个程序运行期间均有值。2)私有模块级别范围变量的定义在模块的声明部分,用户可以定义模块级变量。模块级的变量有两种:私有模块变量和公共模块变量。在程序中,公共模块中的变量对于所有模块的所有过程均可用,而私有模块中的变量只对所属模块过程可用。用户可以在窗体、报表和标准模块顶部的声明部分用Dim或Private定义模块级别的变量。由Dim语句在声明部分所声明的变量,其范围默认为私有,即为私有模块级变量。Private是专门用于私有模块的。DimXasSinglePrivateXasSingle,变量的应用范围,3)公共模块级别范围变量的使用如果将一个变量声明为公共模块级别变量,那么它可以被工程中的所有过程调用。声明公共模块变量需要用Public关键字。公共模块级别变量必须在模块中定义,推荐将所有公共变量集中在一个模块中定义,这样便于阅读代码和查找变量。PublicXasSingle除了事件过程之外,所有过程默认都是公共过程。当VBA创建一个事件过程时,在过程声明前会自动加上关键字Private。而对于其他过程,如果希望变量为私有,则必须使用Private来定义。,数组,数组也是一个被命名的内存区域,数组中可以包含多个存储单元,每个存储单元都被称为元素。数组的各元素都应存储相同类型的数据。为了识别数组中不同的元素,数组元素可以通过下标来访问,数组下标默认从0开始。定义数组格式:Dim数组名(下标TO上标)as数据类型例如:DimWorkers(8)asInteger数组包含了9(0-8)个存储单元。Dimaa(1TO10,1TO20)asInteger二维数组,可看成10行20列的表格,包含200个存储单元。Access还可定义多维数组。,动态数组,如果在程序运行之前不能肯定数组的大小,就要用到动态数组,即在程序运行时动态决定数组的大小。建立动态数组的操作步骤如下:步骤一:使用Dim声明空的动态数组。例如:DimArr()步骤二:使用ReDim语句配置数组个数。ReDim语句声明只能用在过程中,它是可执行语句,可以改变数组中元素的个数,但不能改变数组的维数。ReDimArr(4)这样改变大小时会清空原来的数据ReDimPreserveArr(4)这样改变大小时会保留原来的数据,运算符与表达式,表达式表达式是由常量、变量、函数、运算符和圆括号等构成。VBA提供了丰富的运算符,其中包括算术运算符、比较运算符、逻辑运算符和连接运算符等。参与运算的数据被称作操作数。运算符和操作数据构成表达式。,3,1数学运算,:加法运算,也适合于字符串的之间的连接运算。:加法运算。*:乘法运算。/:除法运算。用来进行两个数的除法运算并返回一个浮点数。:整除运算。返回两数相除后的整数部分。Mod:求余运算。例如:21Mod2表示21被1整除以后的余数,结果为1。:幂运算。例如:32表示以3为底的2次方,结果为9。它们的运算优先级(由先至后):、*或/、Mod、+或-,关系运算也称比较运算,主要用于数值、日期等之间的比较。VB共提供六种运算符,分别是:=(等于),(大于),=(大于等于),(不等于)。,3逻辑运算,2关系运算,4连接运算,连接运算符作用是将两个字符串连接起来,包含“+”和“&”。“+”只能连接两个字符串,“&”可以将两个不同类型的表达式强制连接。在字符串变量后使用运算符“&”时应注意,变量与运算符“&”间应加一个空格。如X&Y。同时为了避免混淆,建议字符串连接运算最好用“&”。,表达式的运算顺序,表达式的运算顺序由高到低:函数运算算术运算关系运算逻辑运算Like运算符:主要用于字符串匹配Is运算符:主要用于对象比较如:IsNull书写时的注意事项:见书P255,常用标准函数,按功能来分,常用的可分为数学函数、字符函数、转换函数、日期函数、测试函数等。函数的使用格式:函数名(参数列表)其中,函数名表明函数功能,函数的参数放在函数后面的圆括号中,参数可以有一个或多个,少数函数为无参函数。例如:Left(学号,4)其功能为取学号的前4位Date()其功能为取系统日期Year(出生日期)其功能为对出生日期取年份Val(“12345”)其功能为将字符转换为数字其它函数介绍见书P256-259,4,输入输出,InputBox(),MsgBox(),Debug.Print,MsgBox过程,InputBox()函数,功能:函数将产生一个对话框,这个对话框作为输入数据的界面,等待用户输入数据或按下按钮,并返回所输入的内容。返回值为String型。格式:InputBox(prompt,title,default,xpos,ypos)说明:prompt为提示信息,不可省略。title为设置对话框的标题。default为默认值。xpos,ypos为对话框所在屏幕的位置(X,Y为对话框左上角点在屏幕上的点坐标)。举例:MS=InputBox(“请再输入一个字符”,“我等到花儿也谢了”,3),MsgBox()函数,功能:弹出一个消息框,并根据用户在消息框中的选择,得到不同的返回值。格式:MsgBox(msg,type,title)说明:msg为提示信息,不可省略。type为一个数值,见书P261中的表8.10所示,为四组数据相加的和,不同的数值代表不同的含义。Title为设置消息框的标题。举例:AT=MsgBox(“是否继续输入?”,4+32+0,“温馨提示”)如果用户选择“是”,则AT为6,选择“否”,则AT为7。,MsgBox过程,功能:当只需要弹出一个消息框对用户进行提示,而无需返回一个值时,还可使用MsgBox过程。格式:MsgBoxMsg,type,title说明:其使用方法与MsgBox()函数一致,唯一不同之处在于无返回值。只用于对用户提示。举例:MsgBox“请保存文件,系统即将关闭!”,Debug.Print,功能:将结果显示在“立即窗口”中。格式:Debug.Print说明:菜单栏【视图】【立即窗口】打开“立即窗口”。举例:ms=InputBox(“请再输入一个字符”,“我等到花儿也谢了”,3)at=MsgBox(“是否继续输入?”,4+32+0,“温馨提示”)Debug.Printms,at另:用?命令也可以实现将结果显示在“立即窗口”中。,模块的基本概念,Access中的模块分为两大类:类模块和标准模块。类模块包括:窗体模块、报表模块和独立的类模块。在与对象相关的类模块中,声明或存在的任何变量的值都仅在该代码中运行,且仅在该对象中可用。标准模包含与任何其他对象无关的通用过程。在数据库窗体“对象”栏选择“模块”,再单击【新建】按钮,即可进入标准模块的设计和编辑窗口。,过程,过程:是模块的单元组成,由VBA代码编写而成的,分为Sub子过程和Function函数过程。1、Sub子过程2、Function函数过程格式:格式:注意:Sub过程可以用Call关键字调用,Function函数过程则不能用Call调用执行。,Sub过程名代码EndSub,Function过程名代码EndFunction,VBA的语法基础,按照功能不同,VBA语句可以分成三大类:声明语句:如用于变量、符号常量或程序定义的语句。DimaaasInteger执行语句:如赋值、程序调用和实现流程控制的语句等。aa=45注释语句:主要用于为命令行进行注解说明。Rem语句格式:Rem注释内容说明:Rem是一个注释语句,写程序语句之后时需用冒号隔开。(单引号)语句格式:注释语句说明:用在程序语句之后,无需冒号分隔。,5,VBA语句书写规则,1)VBA代码不区分字母大小写。2)当语句太长,一行写不下时,可分为多行书写,但须在行后加续行标志“_”3)同一行可以写多个语句,语句间用冒号“:”分隔。,VBA流程控制,VBA程序的执行控制流程有3种基本结构:顺序结构、条件判断结构和循环结构。顺序结构举例(实训19):例1:编写一个VBA程序,消息框显示“HelloVBA!”。,6,运行结果如下:,例2:在题1基础上修改并运行。,运行结果如下:,例4:用户输入华氏温度F,编程将其转换为摄氏温度C。转换公式为:c=(5/9)*(f-32),运行结果如下:,面向对象的程序设计,1.对象和类(1)对象在面向对象的程序设计中,对象是基本元素。在VBA中进行程序设计时,界面上的所有事物都可以被称为对象,如窗体上的某个“文本框”控件就是一个对象。(2)对象的属性属性就是对象的物理性质,比如“文本框”控件的大小、字体颜色、内容的对齐方式等就是“文本框”控件的属性。改变对象的属性值就可以改变对象的行为外观。可以在创建对象时设置属性值,也可以在执行程序时通过命令的方式修改对象的属性值。其引用方式为:对象名.属性名称,(3)对象的方法对象的方法是指对象所固有的、可以完成某种任务的功能,是对象可以执行的动作。调用格式:对象名.方法名称(4)对象的事件事件是一种特定操作。在某个对象上发生或对某个对象发生。事件可以由用户触发,也可以通过系统触发,在大多数情况下,事件是通过一些交互式动作来触发的。比如单击鼠标、双击鼠标、按键、鼠标拖拽、鼠标移动等操作。通常的格式:对象名_事件名()为了使得对象在某一事件发生时能够做出所需要的反应,就必须针对这一事件编写相应的代码来完成相应的功能。当此事件发生时,这段代码程序就被自动激活并开始运行。如果这个事件不发生,那么事件所包含的代码就永远也不被执行,反之若没有为这个事件编写任何代码,即使这个事件发生了,也不会产生任何动作。,对象的三要素,属性、事件和方法构成了对象的三要素,其中属性是对象的静态特性,事件和方法是对象的动态特性。例如设有“命令按钮”控件名为Command1,则描述该控件“高度”、“宽度”等属性的引用格式为:Command1.HeightCommand1.Width“命令按钮”具有移动方法,其引用格式为:Command1.Move在命令按钮上单击鼠标时会触发“单击”事件,其事件过程引用格式为:Command1_Click(),(5)类类是对一组相似对象的性质描述。这些对象具有相同的性质、相同种类的属性以及方法。类是对象的抽象,而对象是类的具体实例。(6)DoCmd对象在Access中,除表、查询、窗体、报表、页、宏和模块等7种对象外,还可以在VBA中使用一些范围更广的对象,如“记录集”对象、DoCmd对象等。DoCmd对象的主要功能是通过调用Access内置的方法,在VBA中实现某些特定的操作。例如,利用DoCmd对象的OpenForm方法打开“教师信息维护”窗体,语句格式为:DoCmd.OpenForm”教师信息维护”,VBA程序与窗体结合举例,实训19例3:在窗体上建立一个标签和一个命令按钮,运行时按下按钮能执行VBA代码,在标签上显示当前日期和时间。窗体及各控件属性设置如下:,实训19例4:设计一个程序,由用户输入一个华氏温度F,程序将其转换为温度C。转换公式为:C=(5/9)*(F-32),条件语句,1.单行结构条件语句格式:If条件Then语句1Else语句2功能:如果“条件”成立(其值为True或为非0值),则执行“语句1”,否则,执行“语句2”。例如:IfxyThenz=x-yElsez=yx,举例,编程实现功能。输入X的值,当X0时,Y=x+1;当X0时,Y=x-1,2.块结构条件语句,单行结构条件语句中,如果条件分支执行的操作比较复杂,不能在一行书写完毕,可以使用块结构条件语句。块结构条件语句格式如下:If条件1Then语句块1ElseIf条件2Then语句块2ElseIf条件3Then语句块3Else语句块nEndIf,举例:判断大小,实训20例1:设计程序,对用户输入的任意两个整数,按升序输出。,单击事件代码如下所示:,实训20题4:计算的值。本题使用模块过程函数实现:(1)函数名为FC,私有类(2)选择结构采用IfElseEndif结构(3)x用于接受用户输入值,y用来存放输出值,举例2:分段函数计算,条件语句SelectCase语句,格式:SelectCaseCaseCaseCaseElseEndSelect,实训20题3:编写程序,当用户在窗体的文本框中输入一个0100的数字时,标签上立即能够显示对应等级:不及格、及格、中、良、优。,举例3:成绩判断,IIF函数和Choose函数,IIF函数格式:IIF(条件,True部分,False部分)功能:当条件成立时,返回Ture部分的值;当条件不成立时,返回False部分的值。举例:Y=IIF(X=0,0,1/X),Choose函数格式:Choose(变量,值为1的返回值,值为2的返回值,值为n的返回值)功能:根据变量的值,返回不同的值。当变量的值是1n的非整数时,系统自动取整。举例:将前面的举例2改用Choose函数来实现。,循环之fornext语句,格式:For=初值To终值Step步长ExitForNext说明:执行过程如图8.13所示。循环变量必须是数值型。步长默认为1。一般初值小于末值,如果初值大于末值,步长要为负数。,循环体,举例1:计算1+2+3+4+99+100的和。分析累加数据初值为1,终值为100,步长(数据间递变)为1,利用For/Next结构很容易实现它。程序代码如下。,举例2:求自然数n的阶乘。(1)使用模块插入过程子函数fact实现(2)模块保存为M45,举例3,编程实现输入一个整数X,能判别其是否为素数。素数又称质数。指只能被1和自身整除的自然数。注意:(1)使用模块过程函数实现,函数名为prime,为私有函数。(2)使用I,N整形变量,其中N为用户输入的数,I为循环计数器(3)循环结构采用Fornext形式(4)效果如图所示,模块最后保存为:M-24,举例4,编写程序,对用户输入的10个数分别统计有几个奇数,有几个偶数。(1)子函数名为count,(2)整形变量i,j分别存放偶数和奇数的个数,(3)变量x存放输入框接收的用户输入数字,(4)循环结构采用fornextn结构(5)vbCRLf为消息框中的换行命令(6)模块名保存为M-23,循环doloop语句,格式1:Dowhile|until条件表达式ExitDoLoop格式2:DoExitDoLoopwhile|until条件表达式,说明:图8.15、图8.16分别是格式1、格式2的执行过程格式1先判断后执行,格式2先执行后判断,循环体内的语句至少执行一次。While指明条件为真是执行循环体内的语句,until则相反,条件为假时执行循环体语句。如果没有while或until,循环体中一定要有exitdo,否则循环无法结束。,举例5,用DoLoop判断条件,求100以内自然数和,主要使用Until为判断条件(1)模块名为M44,过程添加函数summary实现(2)定义整形变量s,n其中s用了存放和,n用来做计数器,举例6,编程实现输入一个正数M(M1),能输出1M间3的倍数,以及倍数和。注意:(1)通过模块子函数实现,子函数名为trad,私有类型(2)定义M,N,S整型变量,M为用户输入的数,N为循环计数器,S存放倍数和定义K为字符串变量,用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长期卧床便秘病人的护理
- 亲子自驾旅行课件
- 景区讲解人员培训
- 关注口腔健康预防蛀牙医疗保健演示模板
- 亲子关系构建课件
- 行政人事工作总结计划
- 公司级爆破企业安全培训课件
- 公司级安全生产培训记录课件
- 《西游记》课件内容
- 事故安全预案培训总结课件
- 企业反恐怖安全风险评估报告
- 固体废物采样记录
- 洁净手术室相关知识考核试题及答案
- Avaya新产品和解决方案介绍课件
- 布洛芬缓释胶囊生产工艺流程课件
- 台湾问题与祖国统一
- 2023年阜阳市颍州区工会系统招聘考试笔试题库及答案解析
- 软式内镜考核标准
- 试生产方案确认表(各单位会签)
- 第3课 秦统一多民族封建国家的建立 课件(共19张PPT)2022-2023学年统编版(2019)高中历史必修中外历史纲要上册
- (新教材)广东粤教粤科版五年级上册科学 第6课 植物需要阳光 教案
评论
0/150
提交评论