




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、9.1 VBA程序设计初步 在Office中包含有Visual Basic for ApplicationVBA),它是Visual Basic的语言的一个子集,与Visual Basic具有相同的语言的功能。 9.1.1 面向对象编程面向对象编程 程序设计语言主要分为面向对象和面向过程两大类程序设计语言主要分为面向对象和面向过程两大类,而,而VBA就是一种面向对象的程序设计语言,对象是就是一种面向对象的程序设计语言,对象是Visual Basic程序设计语言的核心,而程序设计语言的核心,而Access更是基更是基于对象的,对象在数据库编程中无处不在:窗体、报于对象的,对象在数据库编程中无处不
2、在:窗体、报表、数据页甚至数据库本身,都是一种对象。表、数据页甚至数据库本身,都是一种对象。 在在Access中,常用对象有中,常用对象有23个,它们之间多为树形个,它们之间多为树形关系,根据它们的相对关系,可分为根对象和非根对关系,根据它们的相对关系,可分为根对象和非根对象两大类,其介绍如下。象两大类,其介绍如下。 在VBA中,对象是封装数据和相应代码的客体,是代码和数据的结合,使用对象可更方便地管理数据和代码。对象具有属性、方法和事件。 1属性 属性是对象的一个特征,它定义了对象的大小、颜色等特征。根据对象的类别不同,其属性也有所不同,而同一对象的不同实例属性构成也可能有所不同。我们可以通
3、过修改对象的属性值来改变对性的特征。 2方法 方法是对象能够执行的一个操作,是与对象相关联的过程和函数。不同的对象拥有不同的方法集合。例如窗体具有GoToPage方法,而其他对象则不具备此方法。 3事件 Access事件是指操作Access的某个数据对象时发生的特定情况,是对象可以识别的动作。可以通过两种方式处理事件响应:一是使用宏对象来设置事件属性,二是为某个事件编写VBA代码完成动作,这样的代码称为事件过程。 在Access中,事件可分为焦点、鼠标、键盘、窗体、打印、数据、筛选和系统环境事件八大类。 Access为每个事件都定义了一个相对应的属性,属性名为“On”+事件名。如GotFocu
4、s的属性名为OnGotFocus。每个对象的所有事件属性在对象属性对话框的“事件选项卡中均能找到,为事件属性指定值即为该事件定义了相应的响应操作。在Access中,事件的响应分为两种类型:宏响应和事件响应。9.1.2 VBA简介简介 VBAVisual Basic for application是Access的开发语言,其语法与Visual Basic编程语言相互间融,通过它可以像编写VB语言一样来编写VBA程序。概括地说,VBA有以下一些特点: 1操作简单 Access为VBA提供了一个典型的Winows风格的集成开发环境VBE,通过它上面的菜单、工具和各种子窗口,用户可以方便地编译、调试和
5、运行程序。 2面向对象 VBA是面向对象的,这是它也传统编程语言的重要区别。 3事件驱动 VBA用事件驱动程序,即当某个控件或对象相关的事件发生时,会自动启动相应得程序。9.1.3 VBA编程环境 Access所提供的VBA开发界面成为VBEVisual Basic Editor,VB编辑器),它为VBA程序的开发提供了完整的开发和调试工具。 1进入VBE 由于Access模块分为类模块和标准模块详见9.2.1),进入VBE的方式也有所不同。 对于类模块有两种方式: (1单击属性窗体的“事件选项卡,选中某个事件并将其属性设置其为“事件过程”,再单击属性栏右侧的“.”按钮,即可进入。 (2在属性
6、窗体的“事件选项卡下,直接单击时间属性栏右侧的“.”按钮,打开如图9-2所示的“选择生成器对话框,选择“代码生成器”,单击确定即可进入。 对于标准模块,有三种进入方式: (1模块已经存在时,在数据库的“模块窗口下,双击已存在的模块对象即可进入。 (2新建模块时,在数据库的“模块窗口下,单击工作栏上的“新建按钮即可进入。 (3在数据库对象窗体中,单击“工具菜单中的“宏级联菜单的“Visal Basic编辑器选项即可进入。 2VBE窗口 VBE窗口可分为标准工具栏、工程窗口、属性窗口和代码窗口4部分,如图9-3所示。 另外,还有对象窗口、对象浏览器、立即窗口、本地窗口和监视窗口等,可以通过“视图菜
7、单的相应选项选择显示。 1标准工具栏 标准工具栏中包括创建模块时常用的命令按钮,可通过选中或撤消“视图菜单中“工具栏菜单中的“规范按钮来确定显示还是隐藏标准工具栏。标准工具栏及其上按钮如图9-4所示。 2工程窗口 工程窗口又叫工程资源管理器窗口,用于显示应用程序中用到的模块文件列表。通过它可以控制代码窗口、对象窗口以及对象文件夹的显示。 双击工程窗口上的模块或类,相应的代码就会在代码窗口中显示出来。 3属性窗口 用于显示所选对象的属性,可“按字母序和“按分类序查看并编辑这些对象的属性,这种修改对象属性的方法属于“静态设置方法。还可以在代码窗口中使用VBA代码编辑对象的属性,这种方法属于“动态设
8、置方法。 4代码窗口 用于输入和编辑VBA代码。用户可以打开多个代码窗口用来查看各个模块的代码。在代码窗口中,关键字和普通代码的颜色是不同的,可以很容易地区分。 9.2 模块概述模块概述 模块以VBA语言为基础,由声明和过程两部分组成。9.2.1 模块的分类 Access 2019有两个模块类型:类模块和标准模块。 1类模块 类模块是与某一特定窗体或报表相关联的过程集合。它属于Access数据库对象,即新建一个类模块救创建一个新对象。类模块主要包括窗体模块和报表模块和自定义模块,其中窗体模块和报表模块从属于各自的窗体或报表。 2标准模块 标准模块即数据库中的可用函数模块和子程序,只包含通用只一
9、些通用过程和常用过程,并不与任何对象相关联,通常用来存放供其他Access数据库对象使用的公共过程。 3类模块和标准模块的区别 这两种模块的主要区别在于其存储方式和生命周期不同。 类模块的数据由类实例创建,独立于应用程序。标准模块只有一个备份,因此当其中的公共变量发生变化时,其后的程序再读取该变量时,得到的是变量变化后的值。 类模块的作用域是类实例对象的存活期,其中的声明或存在的任何变量或常量的值,都仅在该代码运行时有效。而标准模块的变量在声明为Public时,在工程的任何地方都可见。9.1.2 模块和过程 模块由若干过程组成。过程是VBA程序代码的容器,是程序中的若干较小的逻辑部件,可分为子
10、程序和函数过程,每种过程都有其独特的功能。过程可以简化程序设计任务,还可以增强或扩展Visual Basic的构件。另外,过程还可用于共享任务或压缩重复任务,如减少频繁运算等。 1子过程 子过程是由Sub和End Sub语句包含起来的VBA语句其格式如下: Private|Public|Friend Sub 子过程名参数列表) Exit Sub End Sub 2函数过程 函数过程是由Function和End Function语句包含起来的VBA语句,其格式如下: Private|PublicStaticFunction 函数名参数行)As 数据类型 Exit Function End Fun
11、ction9.3 创建模块创建模块9.3.1 创建新模块创建新模块 1创建标准模块 打开数据库,单击数据库窗口左边对象列表中的“模块选项,然后单击工具栏上的“新建按钮”,即“Visual Basic编辑器”,显示模块设计视图并创建空白标准模块,或单击“Visual Basic编辑器菜单栏中“插入按钮,在弹出的下拉列表中选择“模块选项,也会出现一个空白的标准模块,如图9-5所示。此时在代码窗口即可进行编辑。 2创建类模块 类模块可根据与窗体、报表的相关性分为与窗体报表相关的类模块和与窗体报表不相关的类模块。 创建与窗体或报表相关的类模块过程如下: 双击工程窗口中的窗体名称,然后在弹出的新建模块代
12、码窗口中输入代码即可,如图9-6所示。 创建与窗体或报表不相关的类模块步骤如下: 单击“数据库窗口或“Visual Basic编辑器的菜单栏上“插入”,在弹出下拉列表中选择“类模块”,即可在“Visual Basic编辑器中看到一个空白的类模块。将所需的声明或过程添加到类模块设计视图中,进行保存即可。 设计的类模块可以作为新类型来创建用户自定对象,类中定义的变量为对象的属性,子过程和函数则将成为对象的方法。可以通过对象来引用其属性和方法。9.3.2 将宏转换为模块将宏转换为模块 将窗体或报表上的宏转换为VBA代码的方法如下: (1使用“设计视图的模式打开窗体或报表。 (2单击菜单栏上的“工具按
13、钮,在弹出下拉列表中选择“宏命令,然后选择“将窗体报表的宏转换为Visual Basic代码”。 (3在弹出的“转换宏对话框中,选择所需项,单击“转换按钮即可。 将全局宏转换为VBA代码的方法如下: (1在“数据库窗口中,单击左侧对象列表中的“宏对象按钮,在宏对象列表框中选择要转换的宏名。 (2执行菜单命令“文件”“另存为”,然后在“另存为对话框中输入保存的文件名,在“保存类型中选择“模块”,结束单击“确定”。 (3在弹出的“转换宏对话框中,选择所需选项,单击“转换按钮。9.4 VBA编程基础 VBA是Visual Basic语言的一个子集,集成了整个Office产品套件中的开发语言和开发环境
14、,是Office产品系列中的重要组成部分。 9.4.1 数据类型数据类型 在创建表对象的时候,我们已经接触过数据类型了。数据类型实际上就是指具有相同特征数据对象的集合,包括相同的取值集合和可对其实行的操作。VBA提供了丰富的数据类型,常用数据类型如表9-2所示。9.4.2 常量 VBA的常量包括数值常量、字符常量、符号常量、固有常量和系统定义常量五种。 1数值常量 数值常量即我们常说的常数,相当于数据类型中的整型、小数型和浮点型。 2字符常量 字符常量是由字符串定界符双引号(”)括起来的一串字符。 3符号常量 对于程序中经常出现以及难以记忆的数值,可以表示为符号常量,以便增加程序的可读性和可维
15、护性。一般使用Const语句来声明一个符号常量,其格式如下: Const 常量名As 类型名表达式 4固有常量 固有常量是Access或引用库的一部分,代表固定系统值所有固有常量均可在宏或VBA代码中使用。 固有常量的类型有:操作常量、ADO常量、DAO常量、事件过程常量、键盘代码常量、其他类型常量、RunCommand方法常量、安全性常量、VBA常量和VarType函数常量等。通常,固有常量通过前两个字母来指明定义该常量的对象库。来自Microsoft Access库的常量以“ac开头,来自ActiveX Data ObjectsADO库的常量以“ad开头,而来自VB库的常量以“vb开头。
16、5系统常量 Access和VBA有3个系统常量:True、False和Null。True和False是系统定义的逻辑值,而Null用于指明字段中数据没有或未知值。系统常量可以用在所有应用程序中。 注意: 不能借用系统常量名称作为其他对象的名称,否则会出现如下错误:“编译错误:缺少:标志符”。9.4.3 变量 变量是指程序运行过程中,其值可以发生变化的量。变量可以是任意VBA所支持的数据类型。 变量由变量名标识,其命名规则是:以字母或字符开头,不超过255个字符的字符串。使用变量可以增加程序代码的可读性和可维护性。 1对简单变量的声明 对简单变量的声明可以使用类型说明符、Dim语句和DefTyp
17、e语句。 1使用类型说明符 使用类型说明符声明变量时,将其放在说明变量的最后。 2使用Dim语句声明 可以使用Dim语句声明一个或多个变量,其格式如下: Dim 变量名 As 数据类型 3使用DefType语句 DefType语句主要用于模块级通用声明部分,一般用来声明变量或传送给过程的参数的数据类型,或用来声明指定字符开头的Function或Property Get过程的返回值类型。 DefType语句格式如下: DefType 字母,字母范围 2数组 数组是在有规则的结构中包含一种数据类型的一组数据,也称数组元素变量。数组中的元素数据类型相同而且连续可索引,并且每个元素具有唯一的索引号,更
18、改其中的一个元素不影响其他元素。数组元素变量由数组名和数组下标组成,其中数组名标志数组元素变量位于同一个数组,下标为索引号,用于标志同一数组中不同的数组元素。 9.4.4 表达式 表达式是由关键字、运算符、常量、变量、函数、字段名、控件和属性等组合而成的,用来执行运算、操作字符或测试数据。 在Access中,表达式无处不再,大体可分为5种形式:算术表达式、字符串表达式、关系表达式、布尔表达式和对象运算表达式。 1算术表达式 算术表达式也称数值表达式或数学表达式,是由算术运算符连接数值型常量、变量、函数以及各种对象属性而形成的运算式。 将Access种的算术运算符按其优先顺序由高到低排列如表9-
19、5所示。 2字符串表达式 字符串表达式由字符串运算符连接而成,用于完成字符串的连接运算。字符串运算符又称字符串连接运算符,主要包括3种,如表9-6所示。 3关系表达式 关系表达式是由关系运算符组成的表达式,其结果是一个逻辑值,即真True或假False)。关系运算符又称比较运算符或条件运算符,可用于任意数据类型数据的比较但运算符两边的操作数据的数据类型必须一样)。 比较运算符如表9-7所示 4布尔表达式 布尔表达式又称逻辑表达式,是由逻辑运算符连接布尔逻辑类型常量、变量、函数、表达式以及各种对象属性组合而成的运算式,根据逻辑运算符两边的逻辑值进行运算。其返回值为逻辑值,主要用于条件判断。 按优
20、先级由高到低的顺序排列,逻辑运算符如表9-8所示。 5对象表达式 对象表达式即引用对象或对象属性的表达式,其运算符主要有两种:“!”和“.”,其介绍如表9-10所示。9.5 VBA程序流程控制程序流程控制9.5.1 程序书写规范 1语句书写规则 (1源程序不分大小写,英文字母的大小写是等价的字符串除外)。但是为了提高程序的可读性,VBA编译器对不同的程序部分都有默认的书写规则,当程序书写不符合这些规则时,编译器会自动进行转换。例如,关键字默认首字母大写,其他字母小写。 (2通常一个语句写在一行,但一行最多允许255个字符。当语句较长,一行写不下时,可以用续行符“_将语句连续写在下一行。 (3如
21、果一条语句输入完成,按回车后该行代码呈红色,说明该行语句有错误,应及时修改。 2添加注释 注释是为了提高程序的可读性而在程序需要解释的地方加入的标志性说明语句。一个好的程序一般都有注释语句。 在VBA中,注释语句一般用单引号或Rem关键字作为起始符。单引号可以在VBA代码行的任何位置,此时VBA编译器会将单引号后面同一行的所有内容看成注释内容。使用Rem关键字引导注释语句时,Rem关键字必须是注释语句的第一个词,即注释必须单独成行。9.5.2 VBA程序结构类型程序结构类型 1顺序结构 顺序结构是结构化程序设计中最常见的程序结构,它按代码从上到下顺序依次执行关键字控制下的代码。 另外,在顺序结
22、构中可使用WithEnd With对同一对象执行一系列语句,这些语句按顺序执行,并可省略对象名。该关键字的语法格式如下所示。 With 对象名 Commands End With 2选择结构 选择结构的程序根据条件式的值来选择程序运行的语句。主要有以下一些结构: 1If语句 If 条件表达式1 Then 条件表达式1为真时要执行的语句 Else If 条件表达式2 Then 条件表达式1为假,并且条件表达式2为真时要执行的语句 End If语句 2Select Case语句 Select Case语句是多分支选择语句,即可根据测试条件中表达式的值来决定执行几组语句中的依据。使用格式如下: Select Case 表达式 Case 表达式1 表达式的值与表达式1的值相等时执行的语句 Case 表达式2 表达式的值介于表达式2和表达式3之间时执行的语句 Case Else 上述情况均不符合时执行的语句 End Select 3函数 除了以上两种方式外,VBA还提供了3个函数完成相应的操作。 IIf函数 IIf函数的调用格式如下: IIf条件式,表达式1,表达式2) 它的跳转由最左边的“条件式控制,当条件式为真True时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论