第8章模块和VBA程序设计.ppt

上传人:本田雅阁 文档编号:2987772 上传时间:2019-06-20 格式:PPT 页数:140 大小:839.02KB
返回 下载 相关 举报
第8章模块和VBA程序设计.ppt_第1页
第1页 / 共140页
第8章模块和VBA程序设计.ppt_第2页
第2页 / 共140页
第8章模块和VBA程序设计.ppt_第3页
第3页 / 共140页
第8章模块和VBA程序设计.ppt_第4页
第4页 / 共140页
第8章模块和VBA程序设计.ppt_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《第8章模块和VBA程序设计.ppt》由会员分享,可在线阅读,更多相关《第8章模块和VBA程序设计.ppt(140页珍藏版)》请在三一文库上搜索。

1、1,第8章 模块和VBA程序设计,本章主要内容, VBA程序设计基础, 模块的概念, 常用标准函数, VBA的程序结构, VBA程序运行错误处理, VBA的数据库编程, 过程调用和参数传递, DOCMD对象及常用的 操作方法,2,本章概述,第8章 模块和VBA程序设计,在Access系统中,把宏、窗体和报表等对象结合起来,不用编写程序代码就可以建立功能较完善的数据库管理系统。但宏的功能是有局限性的,它只能处理一些简单的操作,如果要实现功能强大的数据管理,以及灵活的控制功能,宏对象就无能为力了。这时,就需要编写程序模块来实现上述的功能。本章介绍模块的概念和用来建立模块的VBA语言的基础知识。,3

2、,8.1 模块的概念,模块对象是Access系统中所包含的7种对象之一,模块和宏的使用有一些相似之处。宏是由系统自动生成的程序模块,而模块对象是用VBA语言编写的,VBA是Office软件中内置的编程语言,语法与Visual Basic兼容。 1.模块的分类 在Access中,模块分为类模块和标准模块两种类型。 (1)类模块 类模块包括窗体模块和报表模块,它们与各自的 窗体 或报表相关联。 窗体模块中的事件过程的代码用于响应窗体或窗体 上控件的触发事件。报表模块中的事件过程的代码用于 响应报表或报表上控件的触发事件。,第8章 模块和VBA程序设计,4,8.1 模块的概念,在窗体或报表的设计视图

3、中,可以使用下面方法打开模块代码的编辑窗口: 单击工具栏上的“代码”按钮。 为窗体或报表创建事件过程时,系统会自动打开模 块代码编辑窗口。 窗体模块和报表模块的作用范围在其所属窗体或报表内部,并随着窗体或报表的打开而开始,随着窗体或报表的关闭而结束。 类模块也可以不依赖窗体或报表而单独存在,并且这种类模块的类型将列在“数据库”窗口中,显示用于新建数据库对象和打开现有对象的快捷方式。类模块还可以为自定义对象创建定义。,第8章 模块和VBA程序设计,5,8.1 模块的概念,(2)标准模块 标准模块包含与任何其他对象都无关的常规过程,以及可以从数据库任何位置运行的经常使用的过程。标准模块和某个特定对

4、象无关的类模块的主要区别在于其范围和生命周期。 标准模块显示在数据库窗口的“模块”对象中,窗体、报表和标准模块也都显示在“对象浏览器”对话框中。“对象浏览器”对话框用于显示与当前项目有关和引用对象库中对象、属性、方法和常数的信息。,第8章 模块和VBA程序设计,6,8.1 模块的概念,2模块的组成 模块由声明区域和过程两部分组成,声明区域用来声明模块使用的变量,过程是模块的组成单元。过程分为两种类型:子过程(Sub)和函数过程(Function)。 (1)子过程 子过程又称为Sub过程,可以执行一系列操作,无 返回值。定义格式如下: Sub过程名 程序代码 End Sub 可以引用子过程的名称

5、来调用该子过程。在过程名前加上关键字Call,可以显式调用一个子过程。,第8章 模块和VBA程序设计,7,例8-1:下面是一个简单的验证密码的Sub过程。 Sub CheckPwd( ) Dim Pwd As String Pwd=InputBox(“请输入密码!”) If Pwd=”123456” Then MsgBox ”密码正确,欢迎进入系统!” Else MsgBox ”密码错误!” End if End Sub,8,8.1 模块的概念,(2)函数过程 函数过程又称为Funtion过程,可以执行一系列操作,有返回值。定义格式如下: Function过程名 程序代码 End Functi

6、on 调用函数过程时,需要直接引用函数过程的名称,而不能使用Call来调用执行。,第8章 模块和VBA程序设计,9,例8-2:下面是编写求圆面积的函数过程。 Function Circle(r As Single) As Single Dim Circle As Single Circle=0 If r=0 Then MsgBox “圆半径必须是正数!” Endif Circle=3.14159*r*r End Function,10,8.1 模块的概念,3将宏转换为模块 在Access系统中,可以将创建好的宏转换为等价的VBA事件过程或模块的形式。根据要转换宏的类型不同,转换操作有两种情况,

7、一种是转换窗体或报表中的宏,另一种是转换不属于任何窗体和报表的全局宏。 (1)转换窗体或报表中的宏 转换窗体或报表中的宏具体步骤说明如下: 在设计视图中打开窗体。 执行“工具”菜单中的“宏”级联菜单中的“将窗体的宏转换为Visual Basic代码”命令,屏幕显示“转换窗体宏”对话框。,第8章 模块和VBA程序设计,11,8.1 模块的概念, 在对话框中,单击“转换”按钮,屏幕显示“转换完毕”对话框。 单击“确定”按钮完成转换,如图8.2所示。,将全局宏转换为模块的具体步骤说明如下: 在数据库窗口中,单击“宏”对象,选择要转换的宏。 执行“文件”菜单中的“另存为”命令,打开“另存为”对话框,如

8、图8.3所示。,第8章 模块和VBA程序设计,(2)转换全局宏,12,8.1 模块的概念, 在对话框的“保存类型”下拉列表框中,选择“模块”列 表项,然后单击“确定”按钮,屏幕显示“转换宏”对话 框。 在对话框中单击“转换”按钮,屏幕显示“转换完毕”对 话框。 单击“确定”按钮完成转换。,返 回,第8章 模块和VBA程序设计,13,8.2 VBA程序设计基础,VBA是Visual Basic for Application的缩写,是 微软Office系列软件的内置编程语言,与Visual Basic具有 相同的语言功能。在VBA中,程序是由过程组成的,过程由 根据VBA规则书写的指令组成。一个

9、程序包括语句、变量、 运算符、函数、数据库对象、事件等基本要素。在Access程 序设计中,当某些操作不能用其他Access对象实现或实现起 来很困难时,就可以利用VBA语言编写代码,完成这些复杂 任务。,第8章 模块和VBA程序设计,14,8.2.1 面向对象程序设计的基本概念 Access内嵌的VBA编程语言,采用的是目前主流的面向对象编程机制和可视化编程环境,同时也提供了访问数据库和操作数据表中记录的基本方法。 1对象和类 Access中的表、查询、窗体、报表、页、宏和模块等都是数据库的对象,而控件是窗体或报表中的对象。每个不同的对象都通过不同的属性相互区分。对象的属性按其类别会有所不同

10、,而且同一对象的不同实例属性构成也可能有差异。,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,15,8.2 VBA程序设计基础,具有相同属性和方法的对象就组成了类,在窗体或 报表设计视图窗口中,工具箱中的每个控件就是一个 类,而在窗体或报表中创建的具体控件则是这个类的对 象。而属于同一个类的两个对象是通过属性值来区分 的 。 Access中的表、查询、窗体、报表、页、宏和模块 对象也是类,称为对象类。Access数据库窗口左侧显示 的就是数据库的对象类,单击某个对象类可以打开相应 对象窗口。 对象除了属性以外还有方法。对象的方法就是对象 可以执行的行为。,第8章 模块和VBA程序设

11、计,16,8.2 VBA程序设计基础,2属性、方法和事件 属性、方法和事件构成了对象的基本要素。属性描述了对象的性质,例如,文本框控件对象中的名称、字体的相关属性等。 对象属性的引用方式为:对象.属性 方法描述了对象的行为,即在某个对象上执行的一个过程,例如打开和关闭报表对象。 对象方法的引用方式为:对象.方法 事件是由Access定义好的,可以被窗体、报表以及窗体或报表上的控件等对象所识别的动作 。在Access数据库系统里,可以通过以下两种方式来处理窗体、报表或控件的事件响应。,第8章 模块和VBA程序设计,17,8.2 VBA程序设计基础, 使用宏对象来设置事件属性。 为某个事件编写VB

12、A代码过程,完成指定动作,这种代码过程称为事件过程或事件响应代码。 Access中主要的对象事件,如下表所示,第8章 模块和VBA程序设计,18,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,19,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,20,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,21,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,22,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,23,8.2 VBA程序设计基础,8.2.2 VBE编程环境 VBE是Visual Basic Editor的缩写,是Access提供的一个

13、编程环境。 VBE窗口的组成: VBE窗口主要由标准工具栏、工程窗口、属性窗口和代码窗口4部分组成,如图8.6所示。 (1)标准工具栏 VBE窗口中的标准工具栏如图8.7所示。,标准工具栏中常用按钮作用如表8.2所示。,第8章 模块和VBA程序设计,24,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,25,8.2 VBA程序设计基础,8.2.3 VBA的基本数据类型 1数据类型 VBA支持多种数据类型,可以使用“类型说明标点符号“来定义数据类型,还可以使用“类型说明字符“来定义数据类型,VBA的数据类型、类型标识、符号、字段类型及取值范围,如表8.3所示。,第8章 模块和VBA程序

14、设计,26,第二节 VBA程序设计基础,27,8.2 VBA程序设计基础,使用数据类型时,应注意以下问题: (1)布尔型数据(Boolean) 布尔型数据只有两个值:True和False,布尔型数 据转换为其他类型数据时,True转换为-1,False转换 为0。其他类型数据转换为布尔型数据时,0转换为 False,其他值转换为True。 (2)日期型数据(Date) 任何可以识别的文本形式的日期数据都可以赋给日 期变量,日期类型数据必须前后用“#”号括住,例如, #20070317#。,第8章 模块和VBA程序设计,28,8.2 VBA程序设计基础,(3)变体类型数据(Variant) 变体

15、类型是一种特殊的数据类型,除了定长字符串类型及用户自定义类型外,可以包含其他任何类型的数据。变体类型还可以包含Empty、Error、Nothing和Null特殊值。如果用DimAs数据类型 显式声明变量,可以不用类型声明字符了。VBA中规定,如果没有显式声明或使用符号来定义变量的数据类型,默认为变体类型。 2数据类型之间的转换 在编程过程中,有时需要将某种类型数据转换成另一种数据类型。例如,窗体文本框控件中显示的数值数据为字符串型,要想作为数值处理就应进行数据类型转换。Access提供了一些数据类型转换函数,如表8.4示,第8章 模块和VBA程序设计,29,8.2 VBA程序设计基础,第8章

16、 模块和VBA程序设计,30,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,31,8.2 VBA程序设计基础,3对象数据类型 数据库中对象,如数据库、表、查询、窗体和报表等,也有对应的VBA对象数据类型,这些对象数据类型由引用的对象库所定义,常用的VBA对象数据类型和对象库中所包括的对象,如表8.5所示。,第8章 模块和VBA程序设计,32,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,33,8.2 VBA程序设计基础,4用户定义的数据类型 应用过程中可以建立包含一个或多个VBA标准数据类型的数据类型,这就是用户定义数据类型。它不仅包含VBA的标准数据类型,还包含其他用

17、户定义数据类型。用户定义数据类型可以在TypeEndType关键字间定义,定义格式如下: Type 数据类型名 As As EndType,第8章 模块和VBA程序设计,34,例8-3:定义一个学生信息数据类型。 Type NewStudent StuNo As String*8 StuName As String StuSex As String*1 StuAge As Integer EndType,35,例8-4:定义一个学生信息类型变量NewStud。 Dim NewStud As NewStudent NewStud.StuNo=“07010101” NewStud.StuName=

18、“柳志杰” NewStud.StuSex=“女” NewStud.StuAge=20,36,可以用关键字With简化程序中重复的部分。例如,为上面NewStud变量的赋值语句可以修改为如下形式: With NewStud NewStud.StuNo=“07010101” NewStud.StuName=“柳志杰” NewStud.StuSex=“女” NewStud.StuAge=20 EndWith,37,8.2 VBA程序设计基础,8.2.4 VBA的常量、变量、运算符和表达式 1常量 常量是指在程序运行时其值不会发生变化的数据,VBA的常量有直接常量和符号常量两种表示方法。直接常量就是直

19、接表示的整数、单精度数和字符串,如1234、17.28E+9、“StuID”等。 符号常量就是用符号表示常量,符号常量有用户定义的符号常量、系统常量和内部常量3种。 (1)用户定义的符号常量 在VBA编程过程中,对于一些使用频度较多的常量,可以用符号常量形式来表示。符号常量使用关键字Const来定义,格式如下: Const符号常量名称=常量值,第8章 模块和VBA程序设计,38,8.2 VBA程序设计基础,(2)系统常量 系统常量是指Access系统启动时建立的常量,有True、False、Yes、No、On、Off和Null等,编写代码时可以直接使用。 (3)内部常量 VBA提供了一些预定义

20、的内部符号常量,它们主要作为DoCmd命令语句中的参数。内部常量以前缀ac开头,如acCmdSaveAs。 2变量 变量是指程序运行时值会发生变化的数据。在程序运行时数据是在内存中存放的,内存中的位置是用不同的名字表示的,这个名字就是变量的名称,该内存位置上的数据就是该变量的值。,第8章 模块和VBA程序设计,39,8.2 VBA程序设计基础,(1)变量的命名规则 在为变量命名时,应遵循以下规则: 变量名只能由字母、数字和下划线组成。 变量名必须以字母开头。 不能使用系统保留的关键字,例如Sub,Function 等。长度不能超过255个字符。 不区分英文大小写字母,如StuID、sutid和

21、stuID 表示同一个变量。 (2)变量类型的定义 根据变量类型定义的方式,可以将变量分为隐含型变量和显示变量两种形式。,第8章 模块和VBA程序设计,40,8.2 VBA程序设计基础, 隐含型变量 利用将一个值指定给变量名的方式来建立变量,如: NewVar=127 该语句定义一个Variant类型变量NewVar,值127。 在变量名后添加不同的后缀表示变量的不同类型,参见 表8.3。 例如,下面语句建立了一个整数数据类型的变量。 NewVar=23 当在变量名称后没有附加类型说明字符来指明隐含变量的数据类型时,默认为Variant数据类型。,第8章 模块和VBA程序设计,41,8.2 V

22、BA程序设计基础, 显式变量 显式变量是指在使用变量时要先定义后使用。例如,C、C+和Java语言中都要求在使用变量前先定义变量。 定义显式变量的方法如下: Dim 变量名As 类型名 在一条Dim语句中可以定义多个变量,例如,上例中的语句可以改写如下。 Dim Var1,Var2 as String 在模块设计窗口的顶部说明区域中,可以加入Option Explict语句来强制要求所有变量必须定义才能使用。,第8章 模块和VBA程序设计,42,8.2 VBA程序设计基础,(3)变量的作用域 变量定义的位置不同,则其作用的范围也不同,这就是变量的作用域。 根据变量的作用域的不同,可以将变量分为

23、局部变量、模块变量和全局变量3类。 局部变量 局部变量是指定义在模块过程内部的变量,在子过程或函数过程中定义的或不用DimAs关键字定义而直接使用的变量,这些都是局部变量,其作用的范围是其所在的过程。,第8章 模块和VBA程序设计,43,8.2 VBA程序设计基础, 模块变量 模块变量是在模块的起始位置、所有过程之外定义的变量。运行时在模块所包含的所有子过程和函数过程中都可见,在该模块的所有过程中都可以使用该变量,用DimAs关键字定义的变量就是模块变量。 全局变量 全局变量就是在标准模块的所有过程之外的起始位置定义的变量,运行时在所有类模块和标准模块的所有子过程与函数过程中都可见,在标准模块

24、的变量定义区域,用下面的语句定义全局变量: Public 全局变量名 As 数据类型,第8章 模块和VBA程序设计,44,8.2 VBA程序设计基础,(4)变量的生命周期 定义变量的方法不同,变量的存在时间也不同,称为持续时间或生命周期。变量的持续时间是从变量定义语句所在的过程第一次运行到程序代码执行完毕并将控制权交回调用它的过程为止的时间。按照变量的生命周期,可以将局部变量分为动态局部变量和静态局部变量。 动态局部变量 动态局部变量是以DimAs语句说明的局部变量,每次子过程或函数过程被调用时,该变量会被设定为默认值。 数值数据类型为0,字符串变量则为空字符串(“ ”)。这些局部变量与子过程

25、或函数过程持续的时间是相同的。,第8章 模块和VBA程序设计,45,8.2 VBA程序设计基础, 静态局部变量 用Static关键字代替Dim来定义静态局部变量,该变量可以在过程的实例间保留局部变量的值。静态局部变量的持续时间是整个模块执行的时间,但它的作用范围是由其定义位置决定的。 (5)数据库对象变量 Access中的数据库对象及其属性,都可以作为VBA程序代码中的变量及其指定的值来加以引用。 Access中窗体对象的引用格式为: Forms!窗体名称!控件名称.属性名称 Access中报表对象的引用格式为: Reports!报表名称!控件名称.属性名称,第8章 模块和VBA程序设计,46

26、,8.2 VBA程序设计基础,关键字Forms或Reports分别表示窗体或报表对象集合。感叹号“!”分隔开对象名称和控件名称。如果省略了“属性名称”部分,则表示控件的基本属性。 如果对象名称中含有空格或标点符号,就要用方括号把名称括起来。,第8章 模块和VBA程序设计,47,例8-9:下面是对“学生信息”窗体中“学号”信息文本框的引用: Forms!学生信息!学号=“2006010105” Forms!学生信息!学 号=“2006010105” 当需要多次引用对象时,可以使用Set关键字来建立控件对象的变量,这样处理很方便。 例8-10:要多次引用“学生信息”窗体中“姓名”控件的值时,可以使

27、用以下方式: Dim StuName As Control Set StuName=Forms!学生信息!姓名 StuName=“刘磊”,48,8.2 VBA程序设计基础,(6)数组 数组是一组具有相同属性和相同类型的数据,并用统一的名称作为标识的数据类型,这个名称称为数组名,数组中的每个数据称为数组元素,或称为数据元素变量。数组元素在数组中的序号称为下标,数组元素变量由数组名和数组下标组成,例如,A(1)、A(2)、A(3)表示数组A的3个元素。,第8章 模块和VBA程序设计,49,8.2 VBA程序设计基础,数组在使用之前也要进行定义,定义数组的格式如下: 一维数组的定义格式: Dim 数

28、组名(下标下限 to 下标上限) As 数据类型 二维数组的定义格式: Dim 数组名(下标下限 to 下标上限, 下标下限 to 下标上限) As 数据类型 除此之外,还可以定义多维数组,对于多维数组应该将多个下标用逗号分隔开,最多可以定义60维。 缺省情况下,下标下限为0,数组元素从“数组名(0)”至“数组名(下标上限)”。如果使用to选项,则可以使用非0下限。,第8章 模块和VBA程序设计,50,例8-11:定义一个有11个数组元素的整型数组,数组元素为NewArray(0)至NewArray(10) Dim NewArray(10) As Integer 例8-12:定义一个有10个数

29、组元素的整型数组,数组元素为NewArray(1)至NewArray(10) Dim NewArray(1 To 10) As Integer 例8-13:定义一个三维数组NewArray,共含有444(64)个数组元素。 Dim NewArray(3,3,3) As Integer,51,8.2 VBA程序设计基础,VBA中,在模块的声明部分使用OptionBase语句,更改 数组的默认下标下限。 OptionBase 1 数组的默认下标下限设置为1 OptionBase 0 数组的默认下标下限设置为0 VBA还可以使用动态数组,定义和使用方法如下: 用Dim显式定义数组,但不指明数组元素数

30、目。 用ReDim关键字来决定数组元素数目。 Dim NewArray() As Long 定义动态数组 ReDim NewArray(5,5,5) 分配数组空间大小,第8章 模块和VBA程序设计,52,8.2 VBA程序设计基础,在开发过程中,如果预先不知道数组需要定义多少元素时,动态数组是很有用的。当不需要动态数组包含的元素时,可以使用ReDim将其设为0个元素,释放该数组占用的内存。 可以在模块的说明区域加入Global或Dim语句,然后在程序中使用ReDim语句,以说明动态数组为全局的和模块级的范围。如果以Static取代Dim来说明数组,数组可在程序的示例间保留它的值。 数组的作用域

31、和生命周期的规则和关键字的使用方法与传统变量的用法相同。,第8章 模块和VBA程序设计,53,8.2 VBA程序设计基础,3运算符和表达式 在VBA编程语言中,可以将运算符分为算术运算符、关系运算符、逻辑运算符和连接运算符4种类型。不同的运算符用来构成不同的表达式,来完成不同的运算和处理。表达式是由运算符、函数和数据等内容组合而成的,根据运算符的类型可以将表达式分为算数表达式、关系表达式、逻辑表达式和字符串表达式4种类型。 (1)算术运算符 算术运算符用于数值的算术运算,VBA中的算术运算符有7个,如表8.6所示。,第8章 模块和VBA程序设计,54,8.2 VBA程序设计基础,第8章 模块和

32、VBA程序设计,55,8.2 VBA程序设计基础,算术运算符之间存在优先级,优先级是决定算术表达式的运算顺序的原则,算术运算符优先级从高到低依次为乘幂、乘除法、整数除法、求模和加减法。由算术运算符、数值、括号和正负号等构成的表达式称为算术表达式。在算术表达式中,括号和正负号的优先级比算术运算符要高,括号比正负号的优先级高。 例8-17:算术表达式-8+20*4 Mod 6 (52)的结果。计算 的过程如下: 1)计算(52)的结果为2,表达式化为-8+20*4 Mod 6 2 2)计算6 2的结果为36,表达式化为-8+20*4 Mod 36 3)计算20*4的结果为80,表达式化为-8+80

33、 Mod,第8章 模块和VBA程序设计,56,8.2 VBA程序设计基础,36 4)计算80 Mod 36的结果为8,表达式化为-8+8 5)计算-8+8的结果为0 (2)关系运算符 关系运算符用来表示两个值或表达式之间的大小关系,从而构成关系表达式。6个关系运算符的优先级是相同的,如果它们出现在同一个表达式中,按照从左到右的顺序依次运算。但关系运算符比算术运算符的优先级低。 如表8.7所示。关系运算的结果为逻辑值:真(True)和假(False)。,第8章 模块和VBA程序设计,57,8.2 VBA程序设计基础,第8章 模块和VBA程序设计,58,第二节 VBA程序设计基础,(3)逻辑运算符

34、 逻辑运算符也叫布尔运算符,用于完成逻辑运算。VBA中有与(And)、或(Or)和非(Not)等6个逻辑运算符,如表8.8所示。,第8章 模块和VBA程序设计,59,8.2 VBA程序设计基础,使用逻辑运算符可以对两个逻辑量进行逻辑运算, 其结果仍为逻辑值真(True)或假(False),逻辑运算 规则如表8.9所示。表8.9 逻辑运算的真值表,逻辑运算符的优先级低于关系运算符,常用的3个逻 辑运算符之间的优先级由高到低依次为:非运算Not), 与运算符(And),或运算符(Or)。,第8章 模块和VBA程序设计,60,8.2 VBA程序设计基础,(4)连接运算符 连接运算符具有连接字符串的功

35、能。在VBA中有“&”和“+”两个运算符。 “&”运算符用来强制两个表达式作字符串连接。 “+”运算符是当两个表达式均为字符串数据时,才将 两个字符串连接成一个新字符串。 当一个表达式由多个运算符连接在一起时,运算进行的先后顺序是由运算符的优先级决定的。优先级高的运算先进行,优先级相同的运算依照从左向右的顺序进行。上述4种运算符的优先级由高到低依次为算术运算符、连接运算符、关系运算符、逻辑运算符。,返 回,第8章 模块和VBA程序设计,61,8.3 常用标准函数,在VBA中提供了近百个内置的标准函数,用户可以直接调用标准函数来完成许多操作。标准函数的调用形式如下: 函数名(参数表列) 下面按分

36、类介绍一些常用标准函数的使用。 1数学函数 数学函数用来完成数学计算功能。常用的数学函数如表8.10所示。,第8章 模块和VBA程序设计,62,8.3 常用标准函数,第8章 模块和VBA程序设计,63,8.3 常用标准函数,第8章 模块和VBA程序设计,64,例8-20:常用数学函数举例如下: Abs(-7)=7 Exp(2)=7.389 056 098 930 65 Log(6)=1.791 759 469 228 05 Sqr(25)=5 Int(6.28)=6,Fix(6.28)=6 Int(-6.28)=-7,Fix(-6.28)=-6 Sin(90*3.14159/180) Cos(

37、45*3.14159/180) Tan(30*3.14159/l80) Int(100*Rnd) Int(101*Rnd),65,8.3 常用标准函数,2字符串函数 字符串函数完成字符串处理功能。主要包括以下函数: (1)字符串检索函数 函数格式:InStr(Start, Strl,Str2 ,Compare) 函数功能:检索子字符串Str2在字符串Strl中最早出现的位置,返回整型数。 参数说明:Start参数为可选参数,设置检索的起始位置。缺省时,从第一个字符开始检索。Compare参数也为可选参数,指定字符串比较的方法,其值可以为0、1和2。0:缺省值,做二进制比较。1:不区分大小写的文

38、本比较。2:做基于数据库中包含信息的比较。 如果Strl字符串的长度为0或Str2字符串检索不到,则函数返回0。如果Str2字符串长度为0,函数将返回Start值。,第8章 模块和VBA程序设计,66,例8-21:已知Strl=“123456”,Str2=“56”。 s=InStr(strl,str2) 返回5 s=InStr(3, “aBCdAb”, “a”,1) 返回5,67,8.3 常用标准函数,(2)字符串长度检测函数 函数格式:Len(字符串表达式或变量名) 函数功能:返回字符串中所包含字符个数。 参数说明:对于定长字符串变量,其长度是定义时的长度,和字符串实际值无关。 (3)字符串

39、截取函数 函数格式:Left(字符串表达式,N) Right(字符串表达式,N) Mid(字符串表达式,N1,N2) 函数功能:Left函数可以从字符串左边起截取N个字符。Right函数可以从字符串右边起截取N个字符。Mid函数可以从字符串左边第N1个字符起截取N2个字符。,第8章 模块和VBA程序设计,68,8.3 常用标准函数,参数说明:如果N值为0,Left函数和Right函数将返回零长度字符串。如果N大于等于字符串的字符数,则返回整个字符串。对于Mid函数,如果N1值大于字符串的字符数,返回零长度字符串。如果省略N2,返回字符串中左边起第N1个字符开始的所有字符。 (4)生成空格字符函

40、数 函数格式:Space(数值表达式) 函数功能:Space函数可以返回数值表达式的值指定的空格字符数。,第8章 模块和VBA程序设计,69,8.3 常用标准函数,5)大小写转换函数 函数格式:Ucase(字符串表达式) Lcase(字符串表达式) 函数功能:Ucase函数可以将字符串中小写字母转成大写字母。 Lcase函数可以将字符串中大写字母转成小写字母。 (6)删除空格函数 函数格式:LTrim(字符串表达式) RTrim(字符串表达式) Trim(字符串表达式) 函数功能:LTrim函数可以删除字符串的开始空格。RTrim函数可以删除字符串的尾部空格。Trim函数。,第8章 模块和VB

41、A程序设计,70,8.3 常用标准函数,可以删除字符串的开始和尾部空格。 3日期/时间函数 日期/时间函数的功能是处理日期和时间。主要包括以下函数: (1)获取系统日期和时间函数 函数格式:Date Time Now 函数功能:Date函数可以返回当前系统日期。Time函数可以返回当前系统时间。Now函数可以返回当前系统日期和时间。,第8章 模块和VBA程序设计,71,8.3 常用标准函数,(2)截取日期分量函数 函数格式:Year(日期表达式) Month(日期表达式) Day(日期表达式) Weekday(日期表达式,W) 函数功能:Year函数可以返回日期表达式年份的整数。Month函数

42、可以返回日期表达式月份的整数。Day函数可以返回日期表达式日期的整数。Weekday函数可以返回17的整数,表示星期。 参数说明:Weekday函数中,参数W可以指定一个星期的第一天是星期几。缺省时周日是一个星期的第一天,W的值为vbSunday或1。,第8章 模块和VBA程序设计,72,8.3 常用标准函数,W参数的可用的参数值如表8.11所示。 表8.11 指定一个星期的第一天的常数,第8章 模块和VBA程序设计,73,例8-27:日期分量函数举例。 Year(#2007/1/15#) 返回2007 Month(#2007/1/15#) 返回1 Day(#2007/1/15#) 返回15

43、Weekday(#2007/1/15#) 返回2,#2007/1/15#是星期一 Weekday(#2007/1/15#,5) 返回5,74,8.3 常用标准函数,(3)截取时间分量函数 函数格式:Hour(时间表达式) Minute(时间表达式) Second(时间表达式) 函数功能:Hour函数可以返回时间表达式的小时数(0-23)。Minute函数可以返回时间表达式的分钟数(0-59)。Second函数可以返回时间表达式的秒数(059)。 例8-29:时间分量函数举例。 Hour(#20:17:36#) 返回20 Minute(#20:17:36#) 返回17 Second(#20:17

44、:36#) 返回36,第8章 模块和VBA程序设计,75,8.3 常用标准函数,4类型转换函数 类型转换函数可以将数据类型转换成指定类型。 在表8.4中已经列出了一些类型转换函数,下面介绍另外一些类型转换函数。,第8章 模块和VBA程序设计,76,8.3 常用标准函数,(1)字符串转换字符代码函数 函数格式:Asc(字符串表达式) 函数功能:Asc函数可以返回字符串首字符的ASCII值。 (2)字符代码转换字符函数 函数格式:Chr(字符代码) 函数功能:Chr函数可以返回与字符代码相关的字符。 (3)数字转换成字符串函数 函数格式:Str(数值表达式) 函数功能:Str函数可以将数值表达式值

45、转换成字符串。 参数说明:数值表达式的值为正时,返回的字符串将包含一个前导空格。,第8章 模块和VBA程序设计,77,8.3 常用标准函数,(4)字符串转换成数字函数 函数格式:Val(字符串表达式) 函数功能:Val函数可以将数字字符串转换成数值型数字。 参数说明:数字字符串转换时可自动将字符串中的空格、制表符和换行符去掉,当遇到第一个不能识别的字符时,停止转换。 5验证函数 Access提供了一些对数据进行校验的函数,常用的验证函数如表8.12所示。,第8章 模块和VBA程序设计,78,8.3 常用标准函数,第8章 模块和VBA程序设计,79,8.3 常用标准函数,6输入框函数 输入框函数

46、用于在一个对话框中显示提示,等待用户输入正文并按下按钮,然后返回包含文本框内容的数据信息。 函数格式: InputBox(Prompt,Titlel(,Default,Xpos,Ypos,Helpfile,Context),第8章 模块和VBA程序设计,80,例8-33:使用InputBox函数返回用键盘输入的学生ID号,如图8.11所示。 Dim StuID As String StuID=InputBox(“请输入学生ID号:”,“信息提示”),81,8.3 常用标准函数,7消息框函数 消息框用于在对话框中显示消息,等待用户单击按钮,并返回一个整型值指示用户单击了哪一个按钮。 函数格式:

47、MsgBox(Prompt,Buttons,Title,Helpfile,Context),第8章 模块和VBA程序设计,82,8.3 常用标准函数,表8.13 buttons参数与按钮的对应关系,第8章 模块和VBA程序设计,83,8.3 常用标准函数,表8.14 buttons参数中图标设置的常数,第8章 模块和VBA程序设计,84,8.3 常用标准函数,表8.15 buttons参数中默认按钮设置的常数,第8章 模块和VBA程序设计,85,8.3 常用标准函数,表8.16 MsgBox函数中的返回值,返 回,第8章 模块和VBA程序设计,86,8.4 VBA的程序结构,8.4.1 语句

48、一个程序由多条不同功能的语句组成,每条语句能够完成某个特定的操作。 在VBA程序中,按照功能的不同将程序语句分为声明语句和执行语句两类。声明语句用于定义变量、常量或过程。执行语句用于执行赋值操作、调用过程和实现各种流程控制。 执行语句可以根据流程的不同分为顺序结构、条件结构和循环结构3种。顺序结构是按照语句的先后顺序依次执行。条件结构是根据条件选择执行不同的分支语句,又称为选择结构。循环结构是根据某个条件重复执行某一段程序语句。 下面介绍VBA常见几种语句,包括注释语句、声明,第8章 模块和VBA程序设计,87,8.4 VBA的程序结构,语句和赋值语句等 1注释语句 (1)Rem语句 语句格式

49、:Rem 注释内容 (2)英文单引号“”,在某条语句后面添加英文单引号,引号后面的内容为注释内容。 语句格式:注释内容 注释可以添加到程序模块的任何位置,并且默认以绿色文本显示。 2声明语句 声明语句用于命名和定义常量、变量、数组和过程,同时也定义了它们的生命周期与作用范围。,第8章 模块和VBA程序设计,88,8.4 VBA的程序结构,3赋值语句 赋值语句是为变量指定一个值或表达式。 语句格式:Let 变量名=值或表达式 其中,Let为可选项,可以省略。 4语句标号和GoTo语句 语句标号可以放在某条语句之前标记该语句。语句标号的命名规则与变量的命名规则相同。语句标号的格式: 语句标号名称: GoTo语句和语句标号一起用于实现无条件跳转。语句格式为: GoTo语句标号,第8章 模

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1