第八章模块与VBA程序设计8.1模块和过程的创建模块是Access数据库7个对象之一,其实质就是没有界面的VBA程序。模块具有很强的通用性,窗体、报表等对象都可以调用模块内部的过程。模块基本上是由声明、语句和过程组成的集合,它们作为一个已命名的单元存储在一起,对VBA代码进行组织。Access有两种类型的模块:标准模块和类模块。8.1模块和过程的创建类模块٭包括窗体模块(模块中包含在指定的窗体或其控件上事件发生时触发的事件过程的代码。)和报表模块(模块中包含由在指定报表或其控件上发生的事件触发的事件过程的代码。),它们各自与某一特定窗体或报表相关联。٭类模块可以调用标准模块中定义好的过程٭作用范围限于所属窗体或报表内部,生命期也随窗体或报表的打开而开始、关闭而结束8.1模块和过程的创建标准模块٭标准模块包含的是通用过程和常用过程,这些通用过程不与任何对象相关联,常用过程可以在数据库中的任何位置运行。类模块可以调用标准模块中定义好的过程٭标准模块中的公共变量和公共过程具有全局特性,作用范围在整个应用程序,生命期伴着应用程序运行而开始、关闭而结束8.1模块和过程的创建模块的基本组成单元—过程٭Sub子过程▪可执行一系列操作,无返回值▪可在该子过程之外用CALL显示调用▪调用Callmysub(参数1,参数2,…)٭Function函数▪执行一系列操作,返回执行结果▪返回值直接利用函数名调用获得▪调用x=myFuntion(参数)Submysub(参数1,参数2,…)变量声明部分操作语句部分EndSubFunctionmyFunction(参数)变量声明部分操作语句部分EndFunction8.1模块和过程的创建模块的创建创建一个名为“模块入门”的新模块保存为“模块入门”8.1模块和过程的创建过程的创建在“模块入门”模块中创建一个Hello过程用户输入执行过程双击10.2VBA编程环境:VBE界面工程窗口属性窗口代码窗口立即窗口对象选定器过程选定器10.2VBA编程环境:VBE界面ACCESS视图运行子过程/用户窗体中断重新设定工程管理器插入模块属性窗口对象浏览器显示出对象库以及工程里过程中的可用类、属性、方法、事件及常数变量。可以用它来搜索及使用既有的对象,或是来源于其他应用程序的对象。10.2VBA编程环境:如何进入VBE进入VBE的基本方法在数据库窗口单击“工具”→“宏”→“VisualBasic编辑器”双击要查看或编辑的模块对象新建一个模块对象对窗体和报表,在设计视图中点击“代码”按钮对窗体和报表,在设计视图中,点击某一控件的“事件属性”VBA程序设计一门程序设计语言应该怎么学?٭掌握语言的基本用途٭掌握语言的基本构成٭掌握语言的基本书写规范٭掌握语言的数据类型、运算符、常用函数、基本语句结构、调用关系。٭利用上述元素编写程序代码,逐步深化10.3面向对象编程基本概念一、对象与类٭对象:对象是基本的运行时的实体,如窗体、报表、各种控件等,包括作用于对象的操作(方法)和对象的响应(事件)。将数据和处理这些数据的过程封装在一起。٭类:一个抽象的整体概念,对象是类的实例化。٭类与对象是面向对象程序设计语言的基础。٭例:“学生”→类,“张三”→对象10.3面向对象编程基本概念二、属性(Property)所有对象都有自己的属性。用来描述和反映对象特征的参数。如:控件名称(Name)、标题(Caption)、颜色(Color)、字体(FontName)等属性决定了对象展现给用户的界面具有什么样的外观及功能。٭对象属性设置的方法:▪在设计模式下,通过属性窗口直接设置对象的属性。▪在程序的代码中通过赋值实现,其格式为:对象.属性=属性值例:Label10.Caption=“显示”10.3面向对象编程基本概念٭在VBA中引用ACCESS对象:▪基本语法:Forms(或Reports)!窗体(或报表)名称!控件名称[.属性名]▪注意要点–如果在通用模块或在一类模块中引用另一类模块的控件时,应该使用上述完整语法。–如果在类模块中引用自己窗体上的控件,仅采用下面语法:控件名称[.属性名]例如:在窗体Form1中引用Form2上的Label1控件Forms!Form2!Label1.Caption=“教师信息表”在引用Form2上引用自己的Label1控件Label1.Caption=“教师信息表基本控件常用属性属性说明Name(名称)返回或设定对象的名字Caption(标题)返回或设定对象的标题文字Controlsource(数据源)指定控件显示的数据源Decimalplaces(格式)指定显示的小数位数Defaulvalue(默认值)设定控件的默认值Visible(可见性)控件或窗体、报表是否可见Scrollbars(滚动条)窗体或组合框上的滚动条Height、Width(高、宽)设定控件的大小Left、Top(左、右边距)设定控件在窗体或报表中的位置Backstyle(背景样式)指定控件是否透明:常规为1,透明为0Backcolor(背景颜色)指定控件或节的颜色fontName、FontSize(字体名称、字体大小)设定字体及字体大小Enabled控件是否接受焦点和响应用户操作Text设置或返回文本框、组合框中的文本10.3面向对象编程基本概念三、事件(Event)及事件过程(EventProcedure)٭事件:可被对象识别的动作。如:窗体打开OnOpen,按钮的单击OnClick,双击OnDbClick等٭事件过程:是指附在该对象上的程序代码,是事件触发后处理的程序。事件过程的形式如下:Sub对象名_事件过程名[(参数列表)]…..(事件过程代码)EndSub例如:SubcmdOk_Click()cmdOk.FontSize=20’设置命令按钮的字体大小为20EndSub10.3面向对象编程基本概念四、方法(Method)٭方法:在对象上可操作的过程,是VB系统提供的一种特殊的过程和函数٭方法是面向对象的,所以方法调用一般要指明对象。٭对象方法调用形式:[对象.]方法[参数列表]例如:Debug.print欢迎您使用ACCESS‘在立即窗口中打印出文字10.4VBA数据类型、常量、变量本节内容及要求٭1.熟悉VB程序中代码和语句书写规则٭2.掌握VB的数据类型٭3.掌握VB的运算符和表达式的使用٭4.掌握常用内部函数的使用10.4VBA数据类型、常量、变量编码规则٭1.VBA代码中不区分字母的大小写。٭2.一条语句写完后不需加任何结束符。٭3.同行上可以书写多条语句,语句间要用冒号“:”分隔。٭4.若一个语句行不能写下全部语句时,可以换行。换行时需在本行后加入续行符,1个空格加下划线“_”。٭5.一行最多允许255个字符。٭6.注释以Rem开头,也可以使用单引号“'”,注释内容可直接出现在语句的后面。٭7.在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。٭8.函数和方法后应加上括号()。10.4VBA数据类型、常量、变量编码规则举例٭LABEL10与label10相同٭x=y+z:y=z+x:z=y+x在同一行书写了三个语句٭MyVar=“这是一个_&“例子说明如何_&“续行代码“空白加下划线(_)可接续两行以上的代码。٭‘Thisisacomment.(’)引导注释文本RemThisisacommentRem引导注释文本٭IfNumber=1ThenGoToLine1ElseGoToLine2EndifLine1:标号1MyString=“数值等于1“Line2:标号2MyString=数值等于210.4VBA数据类型、常量、变量数据类型-标准数据类型类型类型符字段类型字节Byte(单字节型)无1Integer(整型)%字节/整数/是否2Long(长整型)&长整型/自动编号4Single(单精度型)!单精度数4Double(双精度型)#双精度数8Currency(货币型)@货币8String(字符型)$文本n*1Boolean(布尔型)无是/否2Date(日期型)无日期/时间8Variant(变体型)无任何按需分配Object(对象型)无410.4VBA数据类型、常量、变量数据类型-自定义类型在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。基本语法:[Private|Public]Type类型名元素名As数据类型[元素名As数据类型]……EndType例:定义学生类型数据PublicTypeStudentsNameAsString(8)AgeAsIntegerEndType声明变量:DimStudentAsStudents引用数据:Student.Name=”张三”Student.Age=1510.4VBA数据类型、常量、变量标识符程序中常量、变量、过程等对象的名字,VBA标识符规定:٭第一个字符必须是字母或下划线(_)٭包含的字符数不超过255个٭不得与VBA的关键字同名,如不能使用Sub、For等٭不能使用下列字符:!@&$#(空格)٭从增强程序可读性角度出发,标识符应使人望文生义,了解其代表的内涵。10.4VBA数据类型、常量、变量常量在程序运行过程中,其值不能被改变的量称为常量。VBA中有三类常量:普通常量、符号常量、系统常量٭普通常量▪整型常量:10、110%(Integer)、23&(Long)▪实型常量:0.123!(Single)、-1.123#、1.25E+3、-1.25E-3▪字符串常量:“ABD”、“XYZ、”大家好”▪逻辑常量:ture、false▪日期常量:#2002-5-414:30:00PM#、#09/02/99#10.4VBA数据类型、常量、变量٭符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。▪关键字Const声明符号常量,基本语法如下Const常量名[As类型|类型符号]=常数表达式例如:ConstPI#=3.1415926535等价于:ConstPIAsDouble=3.141592653510.4VBA数据类型、常量、变量٭系统常量VBA系统提供了应用程序和控件的系统定义常数。它们存放于系统的对象库中,在“对象浏览器”中能查看这些常数。颜色常数常数值描述vbBlack0x0黑色vbRed0xFF红色vbGreen0xFF00绿色vbYellow0xFFFF黄色vbBlue0xFF0000蓝色vbMagenta0xFF00FF紫红色vbCyan0xFFFF00青色vbWhite0xFFFFFF白色星期常数常数值描述vbUseSystem0vbSunday1星期日vbMonday2星期一vbTuesday3星期二vbWednesday4星期三vbThursday5星期四vbFriday6星期五vbSaturday7星期六10.4VBA数据类型、常量、变量变量程序中的变量为临时存在单元,可存放文字、数值、日期和对象属性。每个变量都有一个名字,程序通过变量名对变量进行存取操作。٭用Dim语句显式声明变量1、Dim变量名[AS类型]或Dim变量名[类型符]2、声明的每个变量都要一个单独的As类型子句,没有的作为变体类型(Variant)例1:DimiCountAsinteger,sumAssingle等价于:DimiCount%,sum!例2:DimiCountAsinteger,sum,nameasstring*10则声明了两个变量,其中icount为整型,sum为变体型10.4VBA数据类型、常量、变量٭隐式声明变量VBA允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VBA根据程序中赋予变量的值来自动调整变量的类型。例如:变量a,b,Sum都没有事先定义。PrivateSubForm_Click()Sum=0a=10:b=20S