第9章 VBA与模块课件.ppt





《第9章 VBA与模块课件.ppt》由会员分享,可在线阅读,更多相关《第9章 VBA与模块课件.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库案例教程数据库案例教程第第9章章 VBA与模块与模块 VBA的各种语句的各种语句 过程与模块过程与模块 面向对象程序设计主要概念面向对象程序设计主要概念 VBA数据库编程数据库编程 VBA语言基础语言基础学习目标:学习目标: 从概念上掌握模块、模块的事件过程、调用和参数传递、VBA程序的设计基础 ;会为某个系统创建类模块 ,并将系统中的宏转化为模块 ,能为系统中的窗体和报表设计常用事件并编写含有各种流程结构的模块。v 9.1 VBA简介v VBA是事件驱动的,简单来说,它等待能激活它的事件发生,比如说当鼠标被点击,一个键被按下或者一个表单被打开,等等。当事件发生时,VBA调用Window
2、s操作系统的功能去实现“模块”中设定好的语句。这样看来,“模块”和“宏”的使用是差不多的。其实Access中的“宏”也可以存成“模块”,这样运行起来的速度还会更快。“宏”的每个基本操作在VBA中都有相应的等效语句,使用这些语句就可以实现所有单独“宏”命令。v 模块是书写和存放VBA代码的地方。它是一个代码容器,可以将一段具备特殊功能的代码放入模块中,当指定的事件激活模块时,其中包含的代码对应的操作就会被执行。模块有两种形态:v 1标准模块v 简称“模块”,或称为“一般模块”。大多数模块都是标准模块,其中包含的代码和特定的数据库对象并无关联,当数据库中对象被移动时,模块还在原数据库中不动。v 标
3、准模块包含与任何其他对象都无关的常规过程,以及可以从数据库任何位置运行的经常使用的过程。标准模块和与某个特定对象无关的类模块的主要区别在于其范围和生命周期。在没有相关对象的类模块中,声明或存在的任何变量、常量的值都仅在该代码运行时、仅在该对象中是可用的。2类模块 可以包含新对象定义的模块。一个类的每个实例都新建一个对象。在模块中定义的过程成为该对象的属性和方法。类模块可以单独存在,也可以与窗体和报表一起存在。和窗体、报表相关联的分别称为窗口(form)模块和报表(report)模块,这种模块中的代码和特定的报表或窗口相关联。当对应的窗口或报表被移动到另一个数据库时,模块和其中代码通常也会跟着被
4、移动。v 窗体模块 (窗体模块:该模块中包含在指定的窗体或其控件上事件发生时触发的所有事件过程的代码。)和报表模块 (报表模块:该模块中包含在指定报表或其控件上事件触发时的所有事件过程的代码。)都是类模块,它们各自与某一特定窗体或报表相关联。窗体模块和报表模块通常都含有事件过程 (事件过程:自动执行的过程,以响应用户或程序代码启动的事件或系统触发的事件。),过程的运行用于响应窗体或报表上的事件。可以使用事件过程来控制窗体或报表的行为,以及对它们操作的响应,如单击命令按钮。9.1.1 VBA程序初识 VBA是Visual Basic for Application的缩写,是微软Office系列软
5、件的内置编程语言,与Visual Basic具有相同的语言功能。在VBA中,程序是由过程组成的,过程由根据VBA规则书写的指令组成。一个程序包括语句、变量、运算符、函数、数据库对象、事件等基本要素。在Access程序设计中,当某些操作不能用其他Access对象实现或实现起来很困难时,就可以利用VBA语言编写代码,完成这些复杂任务。 9.1.2 VBA程序编辑环境 Access所提供的VBA开发界面成为VBE(Visual Basic Editor,VB编辑器),它为VBA程序的开发提供了完整的开发和调试工具。VBE就是VBA的代码编辑器,在Office的每个应用程序中都存在。可以在其中编辑VB
6、A代码,创建各种功能模块。v1. 开启VBE有多种方式来打开VBE:v在Access应用程序中,在菜单栏里单击【工具】 | 【宏】| Visual Basic 编译器,打开VBE。v在Access应用程序中,在菜单栏里单击【插入】|【模块】或者【类模块】,打开VBE,并且直接在其中创建一个模块或类模块。v刚打开数据库时,在对象栏中选中【模块,然后选择【新建】,打开VBA,并在其中生成一个新的空标准模块。v 2. VBE窗口组成VBE窗口可大体分为六部分:v (1)菜单栏:VBE中所有的功能都可以在菜单栏中实现。v (2)帮助搜索:在图9-3中标号为2的位置,可以输入你所要查询的知识点,就会激活
7、Visual Basic帮助,如图9-4中,就是在搜索栏中输入“属性”,按回车后,激活了Visual Basic帮助窗口,并把搜索到的相关条目列出,你再点击感兴趣的条目,就会打开Miscrosoft Visual Basic帮助文档,示条目的具体内容。帮助搜索和帮助文档 v (3)工具栏:工具栏中包含各种快捷工具按钮,根据功能类型的不同 各属于不同分组。比如:和代码编辑相关的工具按钮就属于“编辑”工具 和调试相关的工具按钮属于“调试”工具。v (4)工程资源管理器:用来显示和管理当前数据库中包含的工程。刚打开VBE时,会自动产生一个与当前Access数据库同名的空工程,可以在其中插入模块。一个
8、数据库可以对应多个工程,一个工程可以包含多个模块。v 工程资源管理器窗口标题下面有三个按钮,分别为:“查看代码” ,显示代码窗口,以编写或编辑所选工程目标代码;“查看对象” ,显示选取的工程,可以是文档或是 UserForm 的对象窗口;“切换文件夹” ,当正在显示包含在对象文件夹中的个别工程时可以隐藏或显示它们。v (5)属性窗口:用来显示所选定对象的属性,同时可以更改对象的属性。v “对象下拉列表框”是用来列出当前所选的对象,只能列出现用窗体中的对象。如果选取了好几个对象,则以第一个对象为准。v “属性列表”:v “按字母序”选项卡 按字母顺序列出所选对象的所有属性。v “按分类序”选项卡
9、 根据性质列出所选对象的所有属性。可以折叠这个列表,这样将只看到分类;也可以扩充一个分类,并可以看到其所有的属性。当扩充或折叠列表时,可在分类名称的左边看到一个加号 (+)或减号(-)图标。 v (6)主显示区域:用来显示当前操作所对应的主窗体。一般情况显示的是“代码窗口”,在其中可以编辑模块代码 9.2 VBA语言基础v 9.2.1 数据类型v 为了不同的操作需要,VB构造了多种数据类型,用于存放不同类型的数据:v (1)Byte 变量存储为单精度型、无符号整型、8 位(1个字节)的数值形式。Byte 数据类型在存储二进制数据时很有用。v (2)Boolean 变量存储只能是 True 或是
10、 False。Boolean 变量的值显示为 True 或 False(在使用 Print 的时候),或者 #TRUE# 或 #FALSE#(在使用 Write # 的时候)。使用关键字 True 与 False 可将 Boolean 变量赋值为这两个状态中的一个。v 当转换其他的数值类型为 Boolean 值时,0 会转成 False,而其他的值则变成 True。当转换 Boolean 值为其他的数据类型时,False 成为 0,而 True 成为 -1。 v (3)Imteger,Long用来存储整形值。v (4)Single,Double用来存储浮点型值。v (5)Currency 变量
11、一般用来存储货币型数值,整型的数值形式,然后除以 10,000 给出一个定点数,其小数点左边有 15 位数字,右边有 4 位数字。Currency 的类型声明字符为at号 ()。v (6)Decimal一般用来存储科学计数法表示的数值。v (7)Date用来存储日期值,时间可以从 0:00:00 到 23:59:59。任何可辨认的文本日期都可以赋值给 Date 变量。日期文字须以数字符号 (#) 扩起来,例如,#January 1, 1993# 或 #1 Jan 93#。 Date 变量会根据计算机中的短日期格式来显示。时间则根据计算机的时间格式(12 或 24 小时制)来显示。 当其他的数值
12、类型要转换为 Date 型时,小数点左边的值表示日期信息,而小数点右边的值则表示时间。午夜为 0 而中午为 0.5。负整数表示 1899 年 12 月 30 日之前的日期。v (8)Object变量用来存储对象。v (9)String变量用来存储字符串,字符串有两种:变长与定长的字符串。v (10)Variant 数据类型是所有没被显式声明(用如 Dim、Private、Public等语句)为其他类型变量的数据类型。Variant 数据类型并没有类型声明字符。Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含
13、Empty、Error、Nothing 及 Null等特殊值。v (11)可以是任何用 Type 语句定义的数据类型。用户自定义类型可包含一个或多个某种数据类型的数据元素、数组或一个先前定义的用户自定义类型。 9.2.2 常量与变量v 1常量v 常量是指在程序运行时其值不会发生变化的数据,VBA的常量有直接常量和符号常量两种表示方法。直接常量就是直接表示的整数、单精度数和字符串,如1234、17.28E+9、“StuID”等。 符号常量就是用符号表示常量,符号常量有用户定义的符号常量、系统常量和内部常量3种。v (1)用户定义的符号常量v 在VBA编程过程中,对于一些使用频度较多的常量,可以用
14、符号常量形式来表示。符号常量使用关键字Const来定义,格式如下:v Const符号常量名称=常量值v (2)系统常量v 系统常量是指Access系统启动时建立的常量,有True、False、Yes、No、On、Off和Null等,编写代码时可以直接使用。v (3)内部常量v VBA提供了一些预定义的内部符号常量,它们主要作为DoCmd命令语句中的参数。内部常量以前缀ac开头,如acCmdSaveAs。v v 2变量v 变量是指程序运行时值会发生变化的数据。在程序运行时数据是在内存中存放的,内存中的位置是用不同的名字表示的,这个名字就是变量的名称,该内存位置上的数据就是该变量的值。v (1)变
15、量的命名规则v 在为变量命名时,应遵循以下规则:v 变量名只能由字母、数字和下划线组成。v 变量名必须以字母开头。v 不能使用系统保留的关键字,例如Sub,Function 等。长度不能超过255个字符。v 不区分英文大小写字母,如StuID、sutid和stuID表示同一个变量。v (2)变量类型的定义v 根据变量类型定义的方式,可以将变量分为隐含型变量和显示变量两种形式。 v 隐含型变量v 利用将一个值指定给变量名的方式来建立变量,如v NewVar=127v 该语句定义一个Variant类型变量NewVar,值127。在变量名后添加不同的后缀表示变量的不同类型。v 例如,下面语句建立了一
16、个整数数据类型的变量。v NewVar=23v 当在变量名称后没有附加类型说明字符来指明隐含变量的数据类型时,默认为Variant数据类型。v 显式变量v显式变量是指在使用变量时要先定义后使用。例如,C、C+和Java语言中都要求在使用变量前先定义变量。v定义显式变量的方法如下:vDim 变量名As 类型名v 在一条Dim语句中可以定义多个变量,例如,上例中的语句可以改写如下。v Dim Var1,Var2 as Stringv在模块设计窗口的顶部说明区域中,可以加入Option Explict语句来强制要求所有变量必须定义才能使用。v(2)数据库对象变量v Access中的数据库对象及其属性
17、,都可以作为VBA程序代码中的变量及其指定的值来加以引用。v Access中窗体对象的引用格式为:v Forms!窗体名称!控件名称.属性名称v Access中报表对象的引用格式为:v Reports!报表名称!控件名称.属性名称v关键字Forms或Reports分别表示窗体或报表对象集合。感叹号“!”分隔开对象名称和控件名称。如果省略了“属性名称”部分,则表示控件的基本属性。v 如果对象名称中含有空格或标点符号,就要用方括号把名称括起来。v 9.2.3 数组v 数组是一组具有相同属性和相同类型的数据,并用统一的名称作为标识的数据类型,这个名称称为数组名,数组中的每个数据称为数组元素,或称为数
18、据元素变量。数组元素在数组中的序号称为下标,数组元素变量由数组名和数组下标组成,例如,A(1)、A(2)、A(3)表示数组A的3个元素。v 数组在使用之前也要进行定义,定义数组的格式如下:v 一维数组的定义格式:v Dim 数组名(下标下限 to 下标上限) As 数据类型v 二维数组的定义格式:v Dim 数组名(下标下限 to 下标上限, 下标下限 to 下标上限) As 数据类型v 除此之外,还可以定义多维数组,对于多维数组应该将多个下标用逗号分隔开,最多可以定义60维。缺省情况下,下标下限为0,数组元素从“数组名(0)”至“数组名(下标上限)”。如果使用to选项,则可以使用非0下限。
19、v在开发过程中,如果预先不知道数组需要定义多少元素时,动态数组是很有用的。当不需要动态数组包含的元素时,可以使用ReDim将其设为0个元素,释放该数组占用的内存。v可以在模块的说明区域加入Global或Dim语句,然后在程序中使用ReDim语句,以说明动态数组为全局的和模块级的范围。如果以Static取代Dim来说明数组,数组可在程序的示例间保留它的值。v数组的作用域和生命周期的规则和关键字的使用方法与传统变量的用法相同。9.2.4 用户自定义数据类型v用户可以使用Type语句定义任何数据类型。用户自定义数据类型可以包括数据类型数组,或当前定义的用户自定义类型的一种或多种元素。v语法:v Pr
20、ivate | Public Type 类型名v 元素名 As 数据类型v 元素名 As 数据类型 v vEnd Typev v例如:定义班级中学生的基本情况数据类型如下:v vPublic Type Studentsv Name As String(8)vAge As IntegervEnd Typev v声明变量:v vDim Student As Studentsv v引用数据:v vStudent.Name=”张三”vStudent.Age=159.2.5 运算符和表达式v在VBA编程语言中,可以将运算符分为算术运算符、关系运算符、逻辑运算符和连接运算符4种类型。不同的运算符用来构成不
21、同的表达式,来完成不同的运算和处理。表达式是由运算符、函数和数据等内容组合而成的,根据运算符的类型可以将表达式分为算数表达式、关系表达式、逻辑表达式和字符串表达式4种类型。v v(1)算术运算符v 算术运算符用于数值的算术运算,VBA中的算术运算符有7个 v算术运算符之间存在优先级,优先级是决定算术表达式的运算顺序的原则,算术运算符优先级从高到低依次为乘幂、乘除法、整数除法、求模和加减法。由算术运算符、数值、括号和正负号等构成的表达式称为算术表达式。在算术表达式中,括号和正负号的优先级比算术运算符要高,括号比正负号的优先级高。v(2)关系运算符v 关系运算符用来表示两个值或表达式之间的大小关系
22、,从而构成关系表达式。6个关系运算符的优先级是相同的,如果它们出现在同一个表达式中,按照从左到右的顺序依次运算。但关系运算符比算术运算符的优先级低。 如表9. 3示。关系运算的结果为逻辑值:真(True)和假(False)。 v (3)使用逻辑运算符可以对两个逻辑量进行逻辑运算,其结果仍为逻辑值真(True)或假(False)v 逻辑运算符的优先级低于关系运算符,常用的3个逻辑运算符之间的优先级由高到低依次为:非运算Not), 与运算符(And),或运算符(Or)。v (4)连接运算符v 连接运算符具有连接字符串的功能。在VBA中有“&”和“+”两个运算符。v “&”运算符用来强制两个表达式作
23、字符串连接。v “+”运算符是当两个表达式均为字符串数据时,才将两个字符串连接成一个新字符串。9.2.6 常用标准函数v 在VBA中提供了近百个内置的标准函数,用户可以直接调用标准函数来完成许多操作。标准函数的调用形式如下:v 函数名(参数表列)v 下面按分类介绍一些常用标准函数的使用。v 1数学函数v 数学函数用来完成数学计算功能。 v 2字符串函数v 字符串函数完成字符串处理功能。主要包括以下函数:v (1)字符串检索函数v (2)字符串长度检测函数v (3)字符串截取函数v 函数格式:Left(字符串表达式,N)v Right(字符串表达式,N)v Mid(字符串表达式,N1,N2)v
24、函数功能:Left函数可以从字符串左边起截取N个字符。Right函数可以从字符串右边起截取N个字符。Mid函数可以从字符串左边第N1个字符起截取N2个字符。v 参数说明:如果N值为0,Left函数和Right函数将返回零长度字符串。如果N大于等于字符串的字符数,则返回整个字符串。对于Mid函数,如果N1值大于字符串的字符数,返回零长度字符串。如果省略N2,返回字符串中左边起第N1个字符开始的所有字符。v (4)生成空格字符函数v 函数格式:Space(数值表达式)v 函数功能:Space函数可以返回数值表达式的值指定的空格字符数。v (5)删除空格函数v 函数格式:LTrim(字符串表达式)v
25、RTrim(字符串表达式)vTrim(字符串表达式)v 函数功能:LTrim函数可以删除字符串的开始空格。RTrim函数可以删除字符串的尾部空格。Trim函数。v 可以删除字符串的开始和尾部空格。 v 3日期/时间函数v 日期/时间函数的功能是处理日期和时间。主要包括以下函数:v (1)获取系统日期和时间函数v 函数格式:Datev Timev Nowv 函数功能:Date函数可以返回当前系统日期。Time函数可以返回当前系统时间。Now函数可以返回当前系统日期和时间。v (2)截取日期分量函数v 函数格式:Year(日期表达式)v Month(日期表达式)v Day(日期表达式) v Wee
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 VBA与模块课件 VBA 模块 课件

限制150内