资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第4章 办公信息处理,NCRE,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第4章 办公信息处理,第,7,章,VBA,编程基础,第,7,章,VBA,编程基础,7.1,VBA,的编程环境,7.2,VBA,模块简介,7.3,VBA,程序设计基础,7.4,VBA,流程控制语句,7.5,面向对象程序设计的基本概念,7.6,过程调用和参数传递,7.7,VBA,的常用操作,7.8,用户定义类模块创建和引用,7.9,VBA,程序运行错误处理,2,7.1 VBA,的编程环境,直接进入:单击“数据库工具”选项卡,在“宏”组中单击“,Visual Basic”,通过创建模块进入:单击“创建”选项卡,然后在“宏与代码”组中单击“,Visual Basic”,通过窗体和报表等对象的设计进入“,VBA”,:通过控件的事件响应,选择“代码生成器”进入代码编辑。,进入,VBA,环境的,3,中方式,3,7.2 VBA,模块简介,7.2.1,标准模块,Sub,子过程,Function,函数过程,7.2.2,类模块,系统对象模块,窗体对象模块和报表对象模块等,用户定义类模块,过程是模块的主要组成单元,4,7.3 VBA,程序设计基础,数据类型,数据类型,类型标识,符号,字段类型,取值范围,整数,Integer,%,字节,/,整数,/,是,/,否,-32768,32767,长整数,Long,&,长整数,/,自动编号,-2147483648,2147483647,单精度数,Single,!,单精度数,负数,-3.402823E38,-1.401298E-45,正数,1.401298E-45,3.402823E38,双精度数,Double,#,双精度数,负数,-1.79769313486232E308,-4.94065645841247E-324,正数,4.94065645841247E-324,1.79769313486232E308,货币,Currency,货币,-922337203685477.5808,922337203685477.5807,字符串,String,$,文本,0,字符,65500,字符,布尔型,Boolean,逻辑值,True,或,False,日期型,Date,日期,/,时间,100,年,1,月,1,日,9999,年,12,月,31,日,变体类型,Variant,无,任何,January1/10000,(日期),数字和双精度同,文本和字符串同,5,7.3 VBA,程序设计基础,变量与常量,变量是指程序运行时值会发生变化的数据。变量名的命名,同字段命名一样,变量命名不能包含有空格或除了下划线字符(,_,)外的任何其它的标点符号,其长度不得超过,255,个字符。,常量是在程序中可以直接引用的实际值,其值在程序运行中不变。不同的数据类型,常量的表现形式也不同,在,VBA,中有,3,种常量:直接常量、符号常量和系统常量。,6,7.3 VBA,程序设计基础,变量的声明,DimAs,例如:,Dim NewVar_1 As Integer,NewVa_1,为整型变量,Dim NewVar_2%,sum,!,NewVar_2,为整型变量,,sum,为单精度型变量,Dim,NewVar_2%,sum,!,相当于,Dim,NewVar_2 As Integer,sum As Single,。,7,7.3 VBA,程序设计基础,强制声明,在默认情况下,,VBA,允许在代码中使用未声明的变量,如果在模块设计窗口的顶部“通用,-,声明”区域中,加入语句:,Option Explicit,8,7.3 VBA,程序设计基础,变量的作用域,局部范围,在子过程或函数过程中定义,Dim,、,Ststic,、,PrivateAs,模块范围,在模块通用区定义,Dim,、,Ststic,、,PrivateAs,全局范围,PublicAs,9,7.3 VBA,程序设计基础,数据库对象变量,Access,建立的数据库对象及其属性,均可被看成是,VBA,程序代码中的变量及其指定的值来加以引用。例如,,Access,中窗体与报表对象的引用格式为:,Forms!,窗体名称,!,控件名称,.,属性名称,或,Reports!,报表名称,!,控件名称,.,属性名称,10,7.3 VBA,程序设计基础,数组,数组是在有规则的结构中包含一种数据类型的一组数据,也称作数组元素变量。数组变量由变量名和数组下标构成,通常用,Dim,语句来定义数组,定义格式为:,Dim,数组名,(,下标下限,to,下标上限,),例如:,Dim NewArray(10,),As Integer,定义了,11,个整型数构成的数组,数组元素为,NewArray(0,)至,NewArray(10,),Dim NewArray(1 To 10,),As Integer,定义了,10,个整型数构成的数组,数组元素为,NewArray(1,)至,NewArray(10,),11,7.3 VBA,程序设计基础,7.3.4,常用标准函数,标准函数一般用于表达式中,有的能和语句一样使用。其使用形式如下:,函数名(,参数,3,参数,4,参数,5,),其中,函数名必不可少,函数的参数放在函数名后的圆括号中,参数可以是常量、变量或表达式,可以有一个或多个,少数函数为无参函数。每个函数被调用时,都会返回一个返回值。,算术函数,字符串函数,日期,/,时间函数,类型函数,12,7.3 VBA,程序设计基础,7.3.5,运算符和表达式,运算符,1,算术运算符,用于算术运算,主要有乘幂(,)、乘法(*)、除法(,/,)、整数除法(,)、求模运算(,Mod,)、加法(,+,)及减法(,)等,7,个运算符。,Dim MyValue,变量定义,MyValue=10 Mod 4,返回,2,MyValue=10 3,返回,3,13,7.3 VBA,程序设计基础,2,关系运算符,用来表示两个或多个值或表达式之间的大小关系,有相等(,=,)、不等(,)、小于(,)、小于相等(,=,)等,6,个运算符。,MyValue=(10 4),返回,True,MyValue=(1=2),返回,False,MyValue=(”,周”,”,刘”,),返回,False,MyValue=(#2013/12/25#4 AND 1=2),返回,False,MyValue=(10 4 OR 1=2),返回,True,15,7.3 VBA,程序设计基础,优先级,高,低,高,低,算数运算符,连接运算符,比较运算符,逻辑运算符,指数运算,(,),字符串连接,(,&),字符串连接,(+),相等,(,=),不等,(,),小于,(,),小于相等,(,=),Not,负数,(,),And,乘法和除法,(,*,、,/),Or,整数除法,(,),求模运算,(Mod),加法和减法,(,+,、,),运算符的优先级,16,7.4 VBA,流程控制语句,VBA,程序语句按照其功能不同分为两大类型:,一是声明语句,用于给变量、常量或过程定义命名;二是执行语句,用于执行赋值操作、调用过程、实现各种流程控制。,执行语句可分为,3,种结构:,1,顺序结构:按照语句顺序顺次执行。如赋值语句、过程调用语句等。,2,分支结构:又称选择结构,根据条件选择执行路径。,3,循环结构:重复执行某一段程序语句。,17,7.4 VBA,流程控制语句,7.4.1,赋值语句,赋值语句是为变量指定一个值或表达式。通常以等号(,=,)连接。在前面我们已多次用到,其使用格式为:,Let,变量名,=,值或表达式,这里,,Let,为可选项。,注意:“,=”,是赋值号,不是等号,18,7.4 VBA,流程控制语句,7.4.2,条件语句,1,IfThen,语句(单分支结构),语句结构为:,If,Then,或,If,Then,End If,T,F,F,T,条件表达式,语句块,图,8.8,单分支结构流程图 图,8.9,双分支结构流程图,条件表达式,语句块,1,语句块,2,19,7.4 VBA,流程控制语句,2,IfThenElse,语句(双分支结构),语句结构为:,If,Then Else ,或,If,Then,Else,End If,20,7.4 VBA,流程控制语句,3,IfThenElseIf,语句(多分支结构),语句结构为(图,8.10,所示):,If,Then,ElseIf Then,else,End If,T,T,T,F,F,条件表达式,1,语句块,1,条件表达式,2,语句块,2,语句块,n,F,条件表达式,n,语句块,n+1,图,8.10,多分支结构流程图,21,7.4 VBA,流程控制语句,4,Select CaseEnd Select,语句,使用格式如下:,Select Case,表达式,Case,表达式,1,表达式的值与表达式,1,的值相等时执行的语句序列,Case,表达式,2 To,表达式,3,表达式的值介于表达式,2,的值和表达式,3,的值之间时执行的语句序列,Case Is,关系运算符表达式,4,表达式的值与表达式,4,的值之间满足关系运算为真时执行的语句序列,Case Else,上面的情况均不符合时执行的语句序列,End Select,22,7.4 VBA,流程控制语句,F,T,表达式,1,语句块,F,T,表达式,2,语句块,F,T,表达式,n,语句块,语句块,图,8.11 Select Case,End Select,语句结构流程图,23,7.4 VBA,流程控制语句,7.4.3,循环语句,1.ForNext,语句,ForNext,语句能够重复执行程序代码区域特定次数,使用格式如下:,For,循环变量,=,初值,To,终值,Step,步长,循环体,条件语句序列,Exit For,结束条件语句序列,Next,循环变量,循环变量,=,初值,循环变量终值,循环变量,=,循环变量,+,步长值,Next,的下一条语句,图,8.12 For,循环语句流程图,循环体,F,T,24,7.4 VBA,流程控制语句,2,DoWhileLoop,语句,使用格式如下:,Do While ,循环体,条件语句序列,Exit Do,结束条件语句序列,Loop,T,条件表达式,语句块,F,图,8.13 Do WhileLoop,循环语句流程图,25,7.4 VBA,流程控制语句,3,Do UntilLoop,语句,与,DoWhileLoop,结构相对应,还有另一个,Do,循环结构,,DoUntilLoop,结构。该结构是条件式值为假时,重复执行循环,直至条件式值为真,结束循环。条件表达式语句块,FT,图,8.14 Do UntilLoop,循环语句流程,循环流程如图,8.14,所示。,使用格式如下:,Do Until,循环体,条件语句序列,Exit Do,结束条件语句序列,Loop,条件表达式,语句块,F,T,图,8.14 Do UntilLoop,循环语句流程,26,7.4 VBA,流程控制语句,4,DoLoop While,语句,Do,循环体,条件语句序列,Exit Do,结束条件语句序列,Loop,While,条件式,循环流程如图,8.15,所示。,5,DoLoop Until,语句,Do,循环体,条件语句序列,Exit Do,结束条件语句序列,Loop Until,条件式,循环流程如图,8.16,所示。,27,7.4 VBA,流程控制语句,语句块,条件表达式,T,F,语句块,条件表达式,F,T,图,8.15 DoLoop While,循环语句流程图 图,8.16 DoLoop Until,循环语句流程图,28,7.5,面向对象程序设计的基本概念,7.5.1,集合和对象,一个对象就是一个实体,如一辆自行车或一个人等。每种对象都具有一些属性以相互区分,如自行车的尺寸、颜色等。即属性可以定义对象的一个实例。,对象除了属性以外还有方法。对象的方法就是对象的可以执行的行为,自行车行走、人说话等。一般情况下,对象都具有多个方法。,在,Access,应用程序由表、查询、窗体、报表、宏和模块对象列表构成,形成不同的类。,29,7.5,面向对象程序设计的基本概念,7.5.2,属性和方法,属性和方法描述了对象的性质和行为。其引用方式为:对象,.,属性 或 对象,.,行为。,Access,中“对象”可以是单一对象,也可以是对象的集合。例如,,Label1.Caption,属性表示“标签”控件对象的标题属性,,Reports.Item(0),表示报表集合中的第一个报表对象。数据库对象的属性均可以在各自的“设计”视图中,通过“属性窗体”进行浏览和设置。,30,7.5,面向对象程序设计的基本概念,7.5.3,事件和事件过程,事件是,Access,窗体或报表及其上的控件等对象可以“辨识”的动作,如单击鼠标、窗体或报表打开等。在,Access,数据库系统里,可以通过两种方式来处理窗体、报表或控件的事件响应。一是使用宏对象来设置事件属性,对此前面已有叙述;二是为某个事件编写,VBA,代码过程,完成指定动作,这样的代码过程称为事件过程或事件响应代码。,31,7.7 VBA,常见操作,8.7.1,打开和关闭操作,1,打开窗体操作,命令格式为:,DoCmd.OpenForm,formname,view,filtername,wherecondition,datamode,windowmode,例如:以对话框形式打开名为“学生信息登录”窗体。,Docmd.OpenForm“,学生信息登录”,acDialog,注意,参数可以省略,取缺省值,但分隔符”,”,不能省略。,32,7.7 VBA,常见操作,2,打开报表操作,命令格式为:,DoCmd.OpenReport,reportname,view,filtername,wherecondition,例如:预览名为“学生信息表”报表的语句为:,Docmd.OpenReport“,学生信息表”,acViewPreview,注意,参数可以省略,取缺省值,但分隔符”,”,不能省略。,33,7.7 VBA,常见操作,3,关闭操作,命令格式为:,DoCmd.Close,objecttype,objectname,save,例如:关闭名为“学生信息登录”窗体。,DoCmd.Close acForm,”,学生信息登录”,如果“学生信息登录”窗体就是当前窗体,则可以使用语句:,DoCmd.Close,。,34,7.7 VBA,常见操作,8.7.2,输入和输出操作,1,输入框(,InputBox,),InputBox(,prompt,title,default,xpos,ypos,helpfile,context,),例如:,strName=InputBox(,请输入姓名:,Msg),35,7.7 VBA,常见操作,2,消息框(,MsgBox,),MsgBox(,prompt,buttons,title,helpfile,context,),例如:,MsgBox,数据处理结束,!,vbInformation,消息,。显示消息框如图,8.24,。,36,Thank You!,Access,数据库程序设计,
展开阅读全文