模块与VBA编程基础.ppt
《模块与VBA编程基础.ppt》由会员分享,可在线阅读,更多相关《模块与VBA编程基础.ppt(93页珍藏版)》请在三一文库上搜索。
1、第8章 模块与VBA编程基础,8.1 模块的基本概念,模块是Access中一个重要的数据库对象,模块中可包含一个或多个过程。 过程是由一系列VBA代码组成的。它包含许多VBA语句和方法,以执行特定的操作或计算数值。 简而言之,模块是装着VBA代码的容器。 特点: 模块比宏的功能更强大,运行速度更快,能直接运行Windows的其他程序。 使用模块可以建立用户自己的函数,完成复杂的计算、执行宏所不能完成的任务。 使用模块可以开发十分复杂的应用程序,使数据库系统功能更加完善。 Access中,模块分为类模块和标准模块两种。,8.1.1 标准模块,标准模块一般用于存放供其他Access数据库对象使用的
2、公共过程。 标准模块通常安排一些公共变量或过程供类模块里的过程调用。在标准模块内部也可以定义私有变量和私有过程仅供本模块内部使用 特点:标准模块中的公共变量和公共过程具有全局特性,其作用在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。 创建方法:选择模块对象,然后单击新建按钮或插入菜单选择模块。,8.1.2 类模块,类模块是以类的形式封装的模块,是面向对象编程的单位。 类模块按照形式不同分为两大类: 系统对象类模块 用户定义类模块,系统对象类模块,窗体和报表都可以含有自己的事件代码和处理模块,这些模块属于系统对象类模块。进入相应的模块代码设计区域的方法:一单击“代码”按钮;
3、二是单击事件过程。 特点:类模块具有局部特性,其作用范围局限在所属窗体或报表内部,而生命周期则是伴随着窗体或报表的打开而开始、关闭而结束。,用户定义类模块,创建方法: 在模块对象下: 单击”插入”|“类模块”,8.2 创建模块,创建模块就是创建过程 过程是模块的单元组成,由VBA代码编写而成。 过程是一段可以实现某个具体功能的代码 过程分为两类:Sub子过程和Function函数过程。 一、在模块中加入过程: 创建方法: 打开窗体或报表的事件过程进入 选中单击模块对象,单击“新建” 一个模块包含一个声明区域,且可以包含一个或多个子过程或函数过程。模块的声明区域是用来声明模块使用的变量等项目。,
4、1、Sub过程(子过程)无返回值。 定义格式:Sub 过程名 程序代码 End Sub 过程的调用:Call 过程名 Sub jc() Dim str1, str2, str3 str1 = “beijing“ : Rem 给变量str1赋值 str2 = “shanghai“ 给变量str2赋值 str3 = str1 + str2 Debug.Print str3 End Sub,Debug.Print在立即 窗口中显示结果,: Rem Dim定义变量,立即窗口的显示:视图|立即窗口,Public Sub name Private Sub name Public 表示 Sub 过程可被所有
5、 Script 中的所有其他过程访问。 Private 表示 Sub 过程只可被声明该过程的 Script 中的其他过程访问。 Name Sub 的名称,遵循标准变量命名约定。 Integer-数据类型 Integer 字节或者整数 。如果知道变量总是存放整数,则应该将其申明为Interger类型或Long 类型。整数的运算速度快,而且占用的内存少。 Dim (定义变量) 方法为:Dim 变量 As 变量类型,2、Function过程(又称函数)有返回值 定义格式:Function 过程名 AS(返回值)类型 程序代码 END Function 调用:直接用函数名调用,过程test的定义如下:
6、 Sub test() Dim n As Integer, k As Long n = InputBox(“n=“) Debug.Print jc(n) k = jc(n) + jc(n+2) 调用函数jc Debug.Print “n!+(n+2)!=“; k End Sub,函数jc的定义如下: Function jc(n As Integer) As Long 函数的返回值为Long型 Dim i As Integer, s As Long s = 1 For i = 1 To n s = s * i Next i jc = s 给函数赋值 End Function,二、在模块中执行宏,
7、在模块的过程定义中,使用Docmd对象的RunMacro方法可以执行设计好的宏 调用格式: Docmd. RunMacro 宏名,宏的运行次数,数值表达式 注意:宏名用双引号引起来,8.3 VBA程序设计基础,VBA是Microsoft Office内置的编程语言,其语法与VB语言兼容。不是一个独立的开发工具,一般被嵌入到像Word、Excel、Access这样的宿主软件中,与其配套使用 VBA采用了面向对象的程序设计方法。,8.3.1、程序语句书写原则,1、语句书写规则 通常一个语句写在一行,语句较长一行写不下时,可以用续行符(_)将语句连续写在下一行 可以使用冒号将几个语句分隔写在一行中
8、例如模块2 当输入一行语句并按下回车键后,代码以红色文本显示表明该语句存在错误 2、注释语句 两种方式: :Rem 注释语句 注释语句 注释默认以绿色文本显示。 还可以利用“编辑”工具栏中的“设置注释块”按钮和“解除注释块”按钮对大块代码进行注释或解除注释,例题:定义变量,赋值并添加注释 Sub ab() Dim str1, str2 str1 = “shanghai“ : Rem 为变量str1赋值 str2 = “ shi bo hui“ 为变量str2赋值 Debug.Print str1 + str2 End Sub 3、采用缩进格式书写程序 显示出流程中的结构 也可以利用编辑缩进或凸
9、出,8.3.2 面向对象程序设计的概念,1对象和集合 对象:在采用面向对象程序设计方法的程序中,程序处理的目标被抽象成了一个个对象,每个对象具有各自的属性、方法和事件。一个对象就是一个实体。对象的方法就是对象的可以执行的行为,一个对象都有多种方法。 对象集合:Access数据库窗口左侧的7类对象列表形成对象类。7类对象。 集合表示的是某类对象所包含的实例构成 Access中除了数据库的7类个对象外,还提供一个重要的对象:DoCmd。主要功能是通过调用包含在内部的方法实现VBA编辑中对Access的操作。,属性和方法描述了对象的性质和行为 格式:对象.属性或对象.行为 属性:用来表示对象的状态,
10、如窗体的Name(名称)属性、Caption(标题)属性等。 如:Label1.caption 方法:用来描述对象的行为,如窗体有Refresh方法,例如,利用Docmd对象的方法可以打开报表“教师信息”,其格式为: Docmd.OpenReport “教师信息” Debug对象有Print方法等。 Debug对象:该对象可在调试阶段用Print方法在立即窗口输出信息 Debug.print,2属性和方法,3事件和事件过程,事件:是对象可以识别的动作,通常由系统预先定义(附录E列出了Access数据库对象的事件) 事件过程:对象在识别了所发生的事件后执行的程序 例如,下面的事件过程描述了单击按
11、钮之后所发生的一系列动作。 Private Sub Command1_Click() Command1.Caption = “首都经济贸易大学“ End Sub,8.3.3 数据类型和数据库对象,Access数据库系统创建表对象时所涉及的字段数据类型(除了OLE对象和备注数据类型外),在VBA中都有数据类型相对应 一、标准数据类型 定义数据类型时,也可以用符号定义 Dim a as single dim a! 1、布尔型数据:两个值True和False。 True=-1 False=0 2、日期型数据:前后必须用#号,如#2012/11/23 3、变体类型数据:除定长字符串类型及用户自定义类型
12、外,包含其他任何类型数据。 VBA中规定,程序中如果没有显式声明或使用符号来定义变量的数据类型,则默认为变体类型,二、用户自定义的数据类型,在应用过程中利用VBA标准数据类型自己定义需要的多种数据类型 格式: Type 数据类型名 As As End Type 例:定义一个学生信息数据类型 Type NewStudent txtNo As String*7 学号,7位定长字符串 txtName As string 姓名,变长字符串 txtSex As String*1 性别,1位定长字符串 txtAge As Integer 年龄,整型 End Type,当需要建立一个变量用来保存包含不同数据
13、类型字段的数据表的一条或多条记录时,用户自定义数据类型就特别有用。 一般用户自定义数据类型使用时,首先要在模块区域中定义用户数据类型,然后显式以Dim,Public或Static关键字来定义此用户类型变量 用户定义类型变量的取值:变量名.分量名 例:Dim NewStud as NewStudent NewStud.txtno=“980306” NewStud.txtName=“冯伟” NewStud.txtSex=“女” NewStud.txtAge=20 也可以使用With关键字简化一下程序中的重复部分。 Dim NewStud as NewStudent With NewStud .tx
14、tno=“980306” .txtName=“冯伟” .txtSex=“女” .txtAge=20 End With,三、数据库对象(略),8.3.4变量与常量 变量是指程序运行时值会发生变化的数据。程序运 行时,变量代表的就是内存中的某块临时存储空间 1、变量的命名规则 (1)以字母或汉字开头,后可跟字母、数字或下划线。 (2)变量名最长为255个字符。 (3)不区分变量名的大小写 (4)不能包含空格 2、常量是指在程序中可以直接引用的实际值,其值在程序运行中不变。VBA中有三种常量:直接常量、符号常量、系统常量。,一变量的声明,变量声明就是定义变量名称及类型,使系统为变量 分配存储空间。一
15、般,变量在使用前应该先声明。 VBA声明变量有两种方法:显式声明 隐含声明 显式声明: 格式为 Dim 变量名 AS 数据类型(或者字符) 例如 Dim ab As integer , sum As single 或 Dim ab%, sum! 隐含声明 没有直接定义而通过一个值指定给变量名,或dim定义 中省略了AS 数据类型,或在变量名称后没有附加类型说 明字符来指明隐含变量的数据类型时,默认为Variant 数据类型。 例如:Dim m,n m,n为变体变量 ab=123 ab为变体变量,值是123 建议在程序中显式声明变量,二、强制声明,在默认情况下,VBA允许在代码中使用未声明的变量
16、,如果在模块设计窗口的顶部“通用-声明”区域中,加入语句: Option Explicit 强制要求所有变量必须定义才能使用。这种方法 只为当前模块设置了自动变量声明功能。 如果想为所有模块都启用此功能,“工具”菜单“选项”对话框,在“编辑器”选项卡中选中“要求变量声明”选项即可。,三、变量的作用域,VBA编程中,变量定义的位置和方式不同,则它存在的时间和起作用的范围也有所不同。这就是变量的生命周期和作用域。VBA中变量的作用域有3个层次: 1、局部范围:变量定义在模块的过程内部 在子过程或函数内部使用Dim、 Static(静态)As关键字说明的变量就是局部范围的。 2、模块范围:变量定义在
17、模块的所有过程之外的起始位置 在模块的通用说明区,用Dim 、Static、private(私有)As关键自定义的变量作用域都是模块范围。 3、全局范围:定义在标准模块的所有过程之外的起始位置,作用范围所有类模块和标准模块的所有子过程与函数过程。 在标准模块的变量定义区域,用PublicAs关键字说明,四、数据库对象变量,Access建立的数据库对象及其属性均可被看成是 VBA程序代码中的变量及其指定的值来加以引用。 引用格式: Forms!窗体名称!控件名称.属性名称或 Reports!报表名称!控件名称.属性名称 如果对象名称中含有空格或标点符号,就要用方括号把名称括起来。 例如:form
18、s!系统登录!用户名=“cueb” forms!系统登录!用 户名=“cueb” 此外还可以用Set关键字来建立控件对象的变量。当需要多次引用对象时,这种方法很方便。 例如: Dim txtName as control 定义控件类型变量 Set txtname= Forms!窗体名称!控件名称.属性名称 txtName=“冯伟”,五、数组,问题:求10个成绩的平均值,并对它们按照从大到小排序,这10个数怎么组织?,如果在程序中要对一组数据进行处理,通常的解决方法是将这组数放在数组中。,放在10个变量中? 放在一个数组中?,数组是一组相同数据类型的数据的集合,1一维数组的定义,使用数组必须先定
19、义数组,格式为 Dim 数组名(to)As 例如,dim score(1 to 10)as Integer 定义了一个有10个元素的整型数组,所有数组元素具有同一个标识即数组名,数组名后括号内的序号称为数组元素的下标。 (1)所有数组元素在内存连续存放 (2)根据下标区分数组元素,关于数组的定义,还有下面的说明。 (1)定义数组时数组名的命名规则与变量名的命名规则相同 (2)一般在定义数组时应给出数组下标的上限和下限。但也可以省略下限,缺省为0。 例如,Dim a(10) As Single 默认情况下,数组a由11个元素组成。 若希望下标从1开始,可在模块的通用声明段使用Option Bas
20、e语句声明。其使用格式为 Option Base 1 (3)和不能使用变量,必须是常量,常量可以是字面常量或符号常量,一般是整型常量。 (4)如果省略As子句,则数组的类型为Varient变体类型。,2二维数组的定义,格式为 Dim 数组名(to,to)As 例如,Dim c(1 To 3, 1 To 4)As Single,3、动态数组,当预先不知道数组定义需要多少元素时,可以把数组定义为动态数组 定义和使用方法:先用dim显式定义数组但不指明数组元素数目,然后用Redim关键字来决定数组中包含的元素数。 例:dim newarray() as long Redim newarray(9,9
21、,9) ,六、变量标识符命名法则,对于控件对象定义变量时,可以用小写字母作为变量名的前缀。例如:文本框用txt,定义一个文本框变量名为txtName 表8.4例出了最常用变量标识符的前缀。 为了易于记忆变量名 p212,七、符号常量(固定不变的值),如果程序中多处用到某个常量,将其定义成符号常量可增加代码的可读性,也便于维护。 用关键字Const定义符号常量: 格式:Const 符号常量名称=常量值 Const PI =3.1415926 符号常量一般需要大写,以便与变量区分 在定义符号常量时,如果前面加上Global或Public 关键字,这一符号常量会涵盖全局或模块级别范围。 例如:Glo
22、bal Const PI=3.1415926,八、系统常量,True False Yes No On Off Null等 单击“视图”菜单选择“对象浏览器”就可以查看Access、VBA等对象库中提供的常量。,8.3.5 常用标准函数,VBA提供了大量的内置函数,这些函数极大地丰富了VBA的功能 了解和使用函数,应从下面三个方面: 函数名 参数(指参数的个数、顺序和类型 ) 函数值(每个函数被调用时都会有一个返回值) 常用函数的使用可以参照附录A学习 下面介绍一些常用函数,一、算术函数(完成数学计算功能),1、绝对值函数:Abs() 返回数值表达式的绝对值。如Abs(-3)=3 2、向下取整函
23、数:Int() 向下取整数的结果,参数为负值时返回小于等于参数值的第一个负数。只取整数部分,不考虑四舍五入 3、取整函数:Fix() 参数为正数时与Int结果一样,参数为负数时返回大于等参数值的第一个负数 例:Int(-3.25)=-4 Fix(-3.25)=-3,4、四舍五入函数: Round(,) 按照指定的小数进行四舍五入。 就是用来指定小数位数的。 例:Round(3.255,1)=3.3 5、开平方函数:Sqr() Sqr(9)=3 6、产生随机数函数:Rnd() 数值表达式: 小于0,每次产生相同的随机数 大于0,每次产生新的随机数 等于0,产生最近生成的随机数 省略参数,默认为大
24、于0,二、字符串函数,1、字符串检索函数: InStr(start,compare) 检索子字符串str2在字符串str1中最早出现的位置,返回一整型数。Start为可选参数,为数值式,设置检索的起始位置。如省略,从第一个字符开始检索。 Compare也为可选参数,指定字符串的比较方法。值可以是1、2和0(缺省)。0做二进制比较,1不区分大小写的文本比较,2基于数据库中包含信息的比较。 例:str1=“98765” str2=“65” S=Instr(str1,str2)=4 S=Instr(3,”aSsiAB”,”a”,1)=5,2、字符串长度检测函数: Len(或) 返回字符串所含字符数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模块 VBA 编程 基础
链接地址:https://www.31doc.com/p-2595874.html