第8章模块与VBA程序设计2.pptx
《第8章模块与VBA程序设计2.pptx》由会员分享,可在线阅读,更多相关《第8章模块与VBA程序设计2.pptx(157页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 模块与VBA程序设计8.1 模块与VBA简介8.2 VBA面向对象程序设计8.3 VBA编程基础8.4 VBA程序的流程控制8.5 子过程与函数过程8.6 VBA常用的操作8.7 VBA数据库编程8.8 VBA程序运行错误处理与调试VBA简介VBA是Visual Basic for Applications的英文缩写,是Microsoft Office系列软件的内置编程语言,是用Visual Basic语言来作为语法基础的可视化的高级语言。VB是微软公司推出的可视化BASIC语言,是一种编程简单、功能强大的面向对象开发工具。VBA的语法结构与VB编程语言互相兼容,它使用了对象、属性、方
2、法和事件等概念,使得初学者在编程的过程中感到十分容易,这也可以说是VBA的优点之一。VBA简介VB语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在Windows平台上;而VBA则不同,其编程环境和VBA程序都必须依赖Office应用程序(如Access、Word、Excel等)。实际上VBA是“寄生于”VB应用程序的版本。用VBA语言编写的代码,将保存在Access中的一个模块里,并通过类似在窗体中激发宏的操作那样来启动(运行)这个模块,从而实现相应的功能。VBA 的开发环境VBEAccess的编程界面称为VBE(Visual Basic Editor),是Access提供的一
3、个编程系统,是用来开发VBA的环境,通过在VBE中输入代码形成VBA程序。启动Access 2010,然后才能进入VBE环境。VBA 的开发环境VBE(1)直接进入VBA。在数据库中,单击“数据库工具”选项卡,在“宏”组中单击“Visual Basic”按钮,可进入VBA的编程环境界面VBA 的开发环境VBE(2)创建模块进入VBA。在数据库中,单击“创建”选项卡,在“宏与代码”组中单击“Visual Basic”按钮,可进入VBA的编程环境界面。VBA 的开发环境VBE(3)通过窗体和报表等大型的设计进入VBA。通过窗体和报表等大型的设计进入VBA有2种方法:在窗体或报表设计视图中单击“查看
4、代码”按钮,进入VBAVBA 的开发环境VBE通过控件的事件响应进入VBA,在控件的“属性表”窗格中,单击对象事件的“省略号”按钮添加事件过程后,在窗体、报表或控件的事件过程中进入VBA(4)按Alt+F11组合键。VBE窗口的组成VBE窗口主要由“标准”工具栏、工程窗口、属性窗口和代码窗口4部分组成模块在Access 2010中,模块有两种类型:类模块和标准模块(1)类模块。类模块是包含代码和数据的集合,总是与某一特定的窗体或报表相关联。类模块包括窗体模块和报表模块。(2)标准模块。标准模块是代码的集合,标准模块包含与其他对象都无关的公共过程,以及公共变量的声明。标准模块显示在导航窗格中。标
5、准模块和类模块都显示在“对象浏览器”对话框中。模块的组成模块由声明区域和过程两部分组成,声明区域用来声明模块使用的变量,过程是模块的组成单元。过程分为两种类型:子过程(Sub)和函数过程(Function)。(1)子过程。子过程又称为Sub过程,可以执行一系列操作,无返回值。定义格式为:Sub Sub 过程过程名名 程序代码程序代码 End End SubSub在过程名前加上关键字Call可以显式调用一个子过程。例题例8-1下面是一个简单的验证密码的Sub过程。Private Sub CheckPwd()Dim Pwd As StringPwdInputBox(请输入密码!)If Pwd123
6、456 Then MsgBox 密码正确,欢迎进入系统!Else MsgBox 密码错误!End IfEnd Sub上例中Sub CheckPwd()就是创建的一个模块。模块的组成(2)函数过程。函数过程又称为Function过程,可以执行一系列操作,有返回值。定义格式为:Function Function 过程过程名名 程序代码程序代码 End End FunctionFunction调用函数过程时,需要直接引用函数过程的名称,而不能使用Call来调用执行。例题例8-2下面是编写求圆形面积的函数过程。Private Function Circle(r As Single)As SingleD
7、im Circle As SingleCircle=0If r=0 Then MsgBox 圆半径必须是正数!End If Circle=3.14159*r*rEnd Function将宏转换为模块转换窗体或报表中的宏。1)在设计视图中打开窗体。2)选择“窗体设计工具/设计”上下文命令选项卡,单击“工具”组中的“将窗体的宏转换为Visual Basic代码”按钮,屏幕显示“转换窗体宏”对话框。3)在对话框中,单击“转换”按钮,屏幕显示转换完毕的提示对话框。4)单击“确定”按钮完成转换。转换全局宏1)在数据库窗口的导航窗格中,展开宏对象列表,选择要转换的宏。2)执行“文件”选项卡中的“对象另存为
8、”命令,打开“另存为”对话框。3)在对话框的“保存类型”下拉列表框中选择“模块”选项,然后单击“确定”按钮,屏幕显示“转换宏”对话框。4)在对话框中单击“转换”按钮,屏幕显示转换完毕的提示对话框。5)单击“确定”按钮完成转换。创建和运行模块例8-3 以Sub过程为例创建模块,实现两个数的交换。Private Sub Command1_Click()Dim x As Integer Dim y As Integer x=Text0 把文本框0的值赋值给x y=Text2 把文本框2的值赋值给y Call swap(x,y)调用过程swap,或者使用格式 swap x,y Text0=x 把交换后
9、的x值重新赋值给文本框0 Text2=y 把交换后的y值重新赋值给文本框2End SubPublic Sub swap(a As Integer,b As Integer)定义一个过程,实现2个数的交换 Dim temp As Integer 定义一个临时变量 temp=a 把a的值赋值给temp a=b 把b的值赋值给a b=temp 把temp的值赋值给bEnd Sub8.2 VBA面向对象程序设计对象:是面向对象方法中最基本的概念。对象可以用来表示客观世界中的任何实体,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。例如:一个人、一本书、一台计算机、
10、一次比赛、一门课程等都是对象。在VBA中,每个可以操作的实体都是对象。例如,表、查询、窗体、报表,宏和模块,以及按钮、文本框、列表框等都是常用的对象。对象是VBA应用程序的基本单元,VBA提供了各种标准对象,可以在程序中直接使用这些对象。8.2 VBA面向对象程序设计某一种类型的对象具有一些共同的属性。将这些共同属性抽象出来就组成一个类。类是描述对象的特征和行为(功能)的模板。客观世界中的实体通常都既具有静态的属性,又具有动态的操作,因此,面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体,通常把对象的操作称为方法。属性、事件和方法属性、方法和
11、事件构成了对象的基本要素。现实生活中的每个对象都有许多特性,每个特性都有一个具体的值。在面向对象程序设计中,对象的特性称为对象的属性,描述该对象特性的具体数据称为属性值。每个对象有多个属性,每个属性有属性值。对象属性的引用方式为:对象对象.属性属性 如:Text1.Value Label0.ForeColor Label0.Caption=“eee”属性、事件和方法方法就是事件发生时对象所执行的操作。VBA中的方法是事件发生时执行的一段内部程序,即事件过程代码。这些代码指定事件发生时对象需要完成的操作。VBA提供了许多常用的方法,我们可以直接调用这些方法,但有些方法则需要我们编写代码来实现。对
12、象方法的引用方式为:对象对象.方法方法 如:DoCmd.OpenForm “学生信息表”属性、事件和方法事件是能够识别的动作。如按钮可以识别单击事件、双击事件等。在类模块每一个过程的开始行都显示对象名和事件名。如:Private Sub c1_Click()。Access 2010中主要的对象事件如表8-2所示。8.3 VBA编程基础标识符命名标识符命名规则规则:(1)由字母、数字、下划线组成,第一个字符必须是字母。(2)不能包含空格以及除下划线之外的标点符号。例如:!、&、$、#等。(3)不能用VBA的关键字和保留字。例如:Dim、Str等。(4)变量名称包含的字符个数不得多于255个。(5
13、)变量名不区分英文字母的大小写。例如sum和SUM是同一个变量名称。(6)从增强程序可读性角度出发,标识符名称应使人见名知意,了解其代表的内涵。8.3 VBA编程基础语句的构成语句的构成VBA程序是语句的集合,语句是一条能够完成某项操作的命令,可以包含关键字、运算符、变量、常数和表达式,用来告诉计算机完成指定任务。8.3 VBA编程基础程序书写规则(1)每条语句通常单独占一行,一行允许多达255个字符。一行可以书写多条语句,各语句之间以冒号“:”分开。(2)如果想将一条语句写在多行上(如太长),则可以在行末尾加续行字符(一个空格加一个下划线)表示此行尚未结束。(3)如果一行语句输入完成后显示为
14、红色,表示该语句存在错误。(4)尽量使用注释信息,清晰易读。(5)注释以Rem开头,也可以使用单引号“”,注释内容可直接出现在语句的后面。(6)代码不区分英文字母大小写。(7)函数和方法后应加上括号。(8)VBA会自动对语句进行一定的格式化。如调整大小写、运算符与操作数之间的间距等,使编写的程序更整齐规范、易于阅读理解。标准数据类型VBAVBA类型型声明符号声明符号数据数据类型型取取值范范围默默认值ByteByte字节02550IntegerInteger%整型-32 76832 7670BooleanBoolean是/否True 和FalseFalseLongLong&长整型-2 147 4
15、83 6482 147 483 6470SingleSingle!单精度负数:-3.402 823E+38-1.401 298E-450正数:1.401 298E-453.402 823E+38DoubleDouble#双精度负数:-1.797 693 134 862 31E+308-4.940 656 484 124 7E-3240正数:4.940 656 484 124 7E-3241.797 693 134 862 31E+308CurrencyCurrency货币-22 337 203 685922 337 203 6850StringString$文本或备注根据字符串长度而定Date
16、Date日期/时间January 1,100December 31,99990VariantVariant任何Empty数据类型之间的转换函数函数类型型参数表达式取参数表达式取值范范围CBoolBoolean任何有效数值或字符串表达式CByteByte0255CCurCurrency-922 337 203 685 477.580 8922 337 20 3685 477.580 7CDateDate任何有效日期表达式CDblDouble负数 -1.797 693 134 862 32E308-4 946 564 584 124 7E-324正数 4.946 564 584 124 7E-32
17、41.797 693 134 862 32E308CIntCIntInteger-32 76832 767,小数部分四舍五入CLngLong-2 147 483 6482 147 483 647,小数部分四舍五入CSngSingle负数-3.402 823E38-1.401 298E-45正数1.401 298E-453.402 823E38CVarVariant数值,范围与Double相同;文本,范围与String相同CStrCStrStringCStr的返回值依据表达式而定对象数据类型对象象对象数据象数据类型型对象象库对应的数据的数据库对象象类型型数据库DatabaseDAO 3.6使用D
18、AO时用Jet数据库引擎打开的数据库连接ConnectionADO 2.1ADO取代了DAO的数据库连接对象窗体FormAccess 9.0窗体,包括子窗体报表ReportAccess 9.0报表,包括子报表控件ControlAccess 9.0窗体和报表上的控件查询QueryDefDAO 3.6查询表TableDefDAO 3.6数据表命令CommandADO 2.1ADO取代DAO.QueryDef对象结果集DAO.RecordsetDAO 3.6表的虚拟表示或DAO创建的查询结果结果集ADO.RecordsetADO 2.1ADO取代DAO.Recordset对象用户定义数据类型应用过程
19、中可以建立包含一个或多个VBA标准数据类型的数据类型,这就是用户定义数据类型。创建自定义的数据类型的语句是TypeEndType,用户自定义类型可包含一个或多个基本数据类型的数据元素、数组或一个先前定义的用户自定义类型。定义格式为:Type Type 数据类型名数据类型名 As As As As EndTypeEndType例题例8-4定义一个学生信息数据类型。Type NewStudentNo As String*8 学号,8位定长字符串Name As String 姓名,变长字符串StuSex As String*1 性别,1位定长字符串StuAge As Integer 年龄,整型End
20、Type例题例8-5定义一个学生信息类型变量NewStud。Dim NewStu As NewStudentNewStu20150123NewStu.Name宏图NewStu.StuSex男NewStu.StuAge19常量、变量常量是指在程序运行过程中,其值不能被改变的量。常量的类型有4种:直接常量、符号常量、固有常量、系统定义常量。(1)直接常量。直接常量直接出现在代码中,即通常的数值或字符串值,也称为字面常量,它的表示形式决定它的类型和值。如:10,3.14,345#(双精度),345.12(货币型),hello,I LOVE VBA 程序设计等。常量、变量(2)符号常量。在程序中,某个
21、常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。VBA中使用关键字Const 声明符号常量。其语法规则如下:Const Const 常量名常量名 As As 类型类型=常数表达式常数表达式常量、变量例如:Const PI=3.1415926Const CCStr=I love Access上例声明中PI是实型常量,其值为3.1415926,CCStr是一个字符串常量,其值为I love Access。常量、变量1)符号常量名必须以字母为首字符,从第二个字符开始可以是数字或字母以及下划线。但要注意的是不能用VBA中的关键字作为常量名。
22、例如,5s、RS.6D、If这几个常量命名就是错误的。2)若是在模块的通用声明区中定义符号常量,则建立一个所有模块都可以用的全局符号常量。一般是Const前加Global或Public关键字。例如:Public Const PI=3.143)如果符号常量定义在事件的过程中,该符号常量只在本过程中可用。4)符号常量定义时可以不用指明数据类型。常量、变量(3)固有常量。VBA还提供了许多固有常量,固有常量也叫做内部常量,它是Access自定义的常量。固有常量有两个字母前缀指明了定义该常量的对象库。通常来自Access库的常量以“ac”开头,来自ADO库的常量以“ad”开头,而来自Visual Ba
23、sic库的常量则以“vb”开头。例如:acForm、adAddNew、vbCurrency。常量、变量(4)系统定义常量。系统定义常量指VBA系统预先定义好的,用户可以直接引用的量。例如:True、False、Yes、No、On、Off、Null等。系统定义常量可以在应用程序中使用。常量、变量变量变量是指在程序运行过程中,其值可以发生改变的量。任何一个变量都有三个要素:变量名、变量类型、变量的值。(1)变量的命名规则。所有的变量命名时都要遵循标识符的命名规则。(2)变量的声明。使用变量前,一般先声明变量名和类型(即先定义),后使用变量。根据变量类型的定义的方式,可以将变量分为隐含型变量和显式变
24、量两种形式。常量、变量1)显式变量声明。使用Dim语句显式声明变量:Dim Dim 变量名变量名 AsAs数据类型数据类型,变量名变量名 AsAs数据类数据类型型 说明:可以用Dim同时定义多个变量,变量之间用西文逗号分隔,每一个变量都应该用As声明类型。例如:Dim a1 As integer,a2 As boolean。用Dim定义的变量是局部变量,会按照数据类型自动设置默认值。常量、变量例如:Dim name As stringDim x As integer,y As integerDim i上述举例中,第二条语句同时声明了两个变量x和y,第三条语句定义i为变体类型,可以存储任何类型数
25、据。常量、变量用类型说明符声明变量类型。在变量名后加VBA的类型说明符来声明变量类型。例如:Dim iCount%,sum!,等价于Dim iCount As integer,sum As single。常量、变量2)隐式说明。VBA允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VBA根据程序中赋予变量的值来自动调整变量的类型。例8-6 变量a,b,Sum都没有事先定义。Private Sub Form_Click()Sum=0 a=10:b=20 Sum=a+b debug.Print Sum
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块 VBA 程序设计
限制150内