1、NoImage计算机科学与工程系计算机科学与工程系第九章第九章 VBA程序设计程序设计 在数据库的实际应用中,普通用户一般不会去在数据库的实际应用中,普通用户一般不会去直接操纵数据库管理系统本身。这就需开发一套完直接操纵数据库管理系统本身。这就需开发一套完整的应用软件供用户进行输入、输出、查询、报表整的应用软件供用户进行输入、输出、查询、报表打印等操作。在打印等操作。在Access中,要完成复杂条件下的对中,要完成复杂条件下的对象操作仅靠控件向导和宏是不够的,借助象操作仅靠控件向导和宏是不够的,借助VBA则可则可以解决实际开发中的复杂应用。以解决实际开发中的复杂应用。本章主要介绍本章主要介绍V
2、BA语言的基本功能及使用,另语言的基本功能及使用,另外,将简单介绍一些用外,将简单介绍一些用VBA编程方法如何实现对数编程方法如何实现对数据库的管理与访问。据库的管理与访问。.NoImage计算机科学与工程系计算机科学与工程系 VB是一种程序设计语言,是一种程序设计语言,VBA则是则是VB的子集,功能的子集,功能与与VB相近,我们可以像编写相近,我们可以像编写VB程序那样来编写程序那样来编写VBA程序。程序。用用VBA语言编写的代码,将保存在语言编写的代码,将保存在Access中的一个模块里,中的一个模块里,通过启动这个模块,从而实现相应的功能。通过启动这个模块,从而实现相应的功能。Acces
3、s中包含的程序模块可以分为两种类型:中包含的程序模块可以分为两种类型:(1)绑定型程序模块绑定型程序模块 如:窗体模块、报表模块如:窗体模块、报表模块 (2)独立程序模块独立程序模块 独立程序模块是指独立程序模块是指Access数据库中的数据库中的“模块模块”对象。对象。这些模块对象可以在数据库中被任意一个对象所调用。这些模块对象可以在数据库中被任意一个对象所调用。如:在此模块中放一些公共变量、函数等。如:在此模块中放一些公共变量、函数等。VBA编程环境:编程环境:.NoImage计算机科学与工程系计算机科学与工程系 模块是将模块是将VBA声明和过程作为一个单元进行保存的集合。声明和过程作为一
4、个单元进行保存的集合。模块有两个基本类型:类模块和标准模块。模块中的代码以模块有两个基本类型:类模块和标准模块。模块中的代码以过程的形成加以组织,每一个过程都可以是一个函数过程过程的形成加以组织,每一个过程都可以是一个函数过程(Function过程过程)或一个子过程或一个子过程(Sub过程过程)。在在Access中,绑定型程序指的是类模块;独立程序模块中,绑定型程序指的是类模块;独立程序模块指的是标准模块。指的是标准模块。模块基础知识:模块基础知识:1.类模块类模块 窗体模块和报表模块都是类模块,而且它们通常都含有窗体模块和报表模块都是类模块,而且它们通常都含有事件过程,该过程用于响应窗体或报
5、表中的事件。可以使用事件过程,该过程用于响应窗体或报表中的事件。可以使用事件过程来控制窗体和报表的行为,以及它们对用户操作的事件过程来控制窗体和报表的行为,以及它们对用户操作的响应,例如单击某个命令按钮。响应,例如单击某个命令按钮。.NoImage计算机科学与工程系计算机科学与工程系 2.标准模块标准模块 标准模块是独立于窗体与报表的模块,一般用于存放公标准模块是独立于窗体与报表的模块,一般用于存放公共过程共过程(子过程和函数过程子过程和函数过程),不与其他任何,不与其他任何Access对象相关联。对象相关联。在在Access 2003系统中,通过模块对象创建的代码过程就是标准系统中,通过模块
6、对象创建的代码过程就是标准模块。标准模块中的公共变量和公共过程具有全局性,其作用模块。标准模块中的公共变量和公共过程具有全局性,其作用范围为整个应用系统。范围为整个应用系统。3.创建模块创建模块 模块是以过程为单元组成的,一个模块包含一个声明区模块是以过程为单元组成的,一个模块包含一个声明区域及一个或多个子过程与函数过程,声明区域用于定义模块中域及一个或多个子过程与函数过程,声明区域用于定义模块中使用的变量等内容。过程是包含使用的变量等内容。过程是包含VBA代码的基本单位,由一系代码的基本单位,由一系列可以完成某项指定的操作或计算的语句和方法组成,通常分列可以完成某项指定的操作或计算的语句和方
7、法组成,通常分为:为:Sub过程(子过程)、过程(子过程)、Function过程(函数)等。过程(函数)等。.NoImage计算机科学与工程系计算机科学与工程系 (1)子过程子过程 Sub过程(又称子过程)以关键词过程(又称子过程)以关键词Sub开始,以开始,以End Sub结束,其定义语句语法格式为:结束,其定义语句语法格式为:Public|Private Static Sub 子过程名子过程名()As 数据类型数据类型 Exit Sub End Sub对于子过程,可以传送参数和使用参数来调用它,但不对于子过程,可以传送参数和使用参数来调用它,但不返回任何值。选用关键字返回任何值。选用关键字
8、Public可使该过程能被所有模块的可使该过程能被所有模块的所有其他过程调用。选用关键字所有其他过程调用。选用关键字Private可使该过程只能被同可使该过程只能被同一模块的其他过程调用。一模块的其他过程调用。.NoImage计算机科学与工程系计算机科学与工程系 (2)函数过程函数过程 函数也是一种过程,是一种特殊的、能够返回值的过程。函数也是一种过程,是一种特殊的、能够返回值的过程。函数过程以关键字函数过程以关键字Function开始,以开始,以End Function结束,其定结束,其定义语句语法格式为:义语句语法格式为:Public|Private Static Function函数过程
9、名函数过程名()As 数据类型数据类型 函数过程名函数过程名=Exit Function 函数过程名函数过程名=End Function选用关键字选用关键字Static,只要含有这个过程的模块是打开的,只要含有这个过程的模块是打开的,则在这个过程中无论是显式或隐式说明的变量值都将被保留。则在这个过程中无论是显式或隐式说明的变量值都将被保留。.NoImage计算机科学与工程系计算机科学与工程系 面向对象程序设计概念面向对象程序设计概念:1.对象对象 客观世界的任何实体都可以被看作是对象。客观世界的任何实体都可以被看作是对象。Access数据数据库就是由各种对象组成的,表是对象,窗体和窗体上的各种
10、库就是由各种对象组成的,表是对象,窗体和窗体上的各种控件也是对象。每个对象都具有各自的属性、方法和事件。控件也是对象。每个对象都具有各自的属性、方法和事件。9.2 VBA编程编程(1)属性和方法属性和方法 属性用来表示对象的状态,方法用来描述对象的行为,属性用来表示对象的状态,方法用来描述对象的行为,即对象自身能够完成的动作。即对象自身能够完成的动作。属性与方法的引用方式为:对象属性与方法的引用方式为:对象.属性名或对象属性名或对象.方法名,方法名,引用中的引用中的“对象对象”描述一般使用格式:父对象类名描述一般使用格式:父对象类名!子对象名。子对象名。Forms!Lb1.Caption=新显
11、示内容新显示内容 Forms!Text1.SetFocus.NoImage计算机科学与工程系计算机科学与工程系 (2)事件和事件过程事件和事件过程事件通常是由系统事先设定的能被对象所识别并响应的事件通常是由系统事先设定的能被对象所识别并响应的动作。如动作。如Click(单击单击)事件、事件、DblClick(双击双击)事件等。事件等。事件过程则是响应某一事件时去执行的程序代码。事件过程则是响应某一事件时去执行的程序代码。2.类类 类是对一类相似对象的性质描述,这些对象具有相同的类是对一类相似对象的性质描述,这些对象具有相同的性质;相同种类的属性以及方法。类是对象的抽象,而对象性质;相同种类的属
12、性以及方法。类是对象的抽象,而对象是类的具体实例。是类的具体实例。3.DoCmd对象对象DoCmd的主要功能是通过调用方法,在的主要功能是通过调用方法,在VBA中实现某些中实现某些特定的操作。特定的操作。.NoImage计算机科学与工程系计算机科学与工程系 VBA编程基础编程基础:1.VBA中的基本数据类型中的基本数据类型(1)数值型数据类型数值型数据类型数值型数据类型包括:数值型数据类型包括:Byte、Integer、Long、Single、Double和和Currency。Byte:以一个字节的无符号二进制数存储,取值范围:以一个字节的无符号二进制数存储,取值范围为为0255。由于取值范围
13、较小由于取值范围较小,用的不多用的不多 整数整数(Integer和和Long):%是整型数的符号,可省略。是整型数的符号,可省略。&是长整型数的符号,不可省略。是长整型数的符号,不可省略。整数用的较多整数用的较多,特别是特别是Integer例如:例如:345、-345、345%均表示整型数,均表示整型数,345&、-345&均表示长整型数。均表示长整型数。.NoImage计算机科学与工程系计算机科学与工程系 浮点数(浮点数(Single和和Double)浮点数也称为实数,是带有小数部分的数值,它由浮点数也称为实数,是带有小数部分的数值,它由3部分部分组成:符号、指数和尾数。组成:符号、指数和尾
14、数。表示带小数点的实数时一般用表示带小数点的实数时一般用Single,对值特别大,要求,对值特别大,要求可用可用Double例如:例如:345!、!、-345.67、0.123E+6均表示单精度浮点数,均表示单精度浮点数,123#、-345.67#、0.123E+3#、0.876D+8均表示双精度浮点数。均表示双精度浮点数。货币型(货币型(Currency)货币数据类型是为表示钱款而设置的。货币数据类型是为表示钱款而设置的。例如:例如:3456、123.45均表示货币型数据。均表示货币型数据。另外,另外,VBA还支持用户自定义数据类型。自定义数据类还支持用户自定义数据类型。自定义数据类型实质上
15、是由基本数据类型构造而成的一种数据类型,可以型实质上是由基本数据类型构造而成的一种数据类型,可以根据需要来定义一个或多个自定义数据类型。根据需要来定义一个或多个自定义数据类型。.NoImage计算机科学与工程系计算机科学与工程系 (2)字符型数据类型字符型数据类型(String)是放在双引号内的若干个字符,长度为是放在双引号内的若干个字符,长度为0的字符串称为空的字符串称为空字符串。字符串。例如:例如:123、VBA程序设计程序设计 等均表示字符型数据。等均表示字符型数据。表示空字符串,表示空字符串,表示有一个空格的字符串。表示有一个空格的字符串。(3)日期型数据类型日期型数据类型(Date)
16、日期型数据按日期型数据按8字节的浮点数来存储,日期范围为字节的浮点数来存储,日期范围为1000年年1月月1日至日至9999年年12月月31日,而时间范围为日,而时间范围为00:00:0023:59:59。例如,例如,#April 10,2008#、#11-11-2011#2008-08-18 10:30:00AM#.NoImage计算机科学与工程系计算机科学与工程系 (4)变体数据类型变体数据类型(Variant)变体数据类型是一种可变的数据类型,可以表示任何值,变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串及日期等。如果没有事先声明或使用符号包括数值、字符串及日期等。如果
17、没有事先声明或使用符号(%、!等等)定义变量的数据类型,系统默认为变体类型。定义变量的数据类型,系统默认为变体类型。(5)逻辑数据类型逻辑数据类型(Boolean)也称布尔型。只有也称布尔型。只有True(真真)或或False(假假)两个值。两个值。(6)对象数据类型对象数据类型(Object)对象型数据用来表示图形、对象型数据用来表示图形、OLE对象或其它对象,对象对象或其它对象,对象变量可引用应用程序中的对象。变量可引用应用程序中的对象。.NoImage计算机科学与工程系计算机科学与工程系2.常量、变量和数组常量、变量和数组(1)常量常量常量是在程序中可直接引用的实际值,其值在程序运行常量
18、是在程序中可直接引用的实际值,其值在程序运行过程中不变。在过程中不变。在VBA中,一般有以下中,一般有以下3种常量。种常量。直接常量直接常量实际上就是常数,数据数据的不同决定了常量的不同。实际上就是常数,数据数据的不同决定了常量的不同。例如:例如:456、VBA、#2009-8-24#分别为数值型、字符分别为数值型、字符型、日期型常量。型、日期型常量。符号常量符号常量有些常量可以由用户定义的符号常量来表示,符号常量有些常量可以由用户定义的符号常量来表示,符号常量使用使用Const语句来创建。语句来创建。例如:例如:Const conPI=3.1415.NoImage计算机科学与工程系计算机科学
19、与工程系 固有常量固有常量除了用除了用Const语句声明常量之外,系统还预先定义了许多语句声明常量之外,系统还预先定义了许多固有常量,编程者只要直接使用固有常量即可。固有常量,编程者只要直接使用固有常量即可。例如:例如:vbOK、vbYes、vbNo、vbRed、vbBlue分别代表分别代表“确认确认”、“是是”、“否否”、“红色红色”、“蓝色蓝色”。(2)变量变量变量是指在程序运行过程中值会发生变化的量。计算机变量是指在程序运行过程中值会发生变化的量。计算机处理变化的数据的方法是将数据存储在内存的一块临时存储处理变化的数据的方法是将数据存储在内存的一块临时存储空间,所以变量实际代表的就是内存
20、中的这块被命名的临时空间,所以变量实际代表的就是内存中的这块被命名的临时存储空间。存储空间。变量的三个要素:变量名、变量类型、变量的值。变量的三个要素:变量名、变量类型、变量的值。.NoImage计算机科学与工程系计算机科学与工程系变量的命名规则:变量的命名规则:变量名只能由字母、数字、汉字和下划线组成,不能含变量名只能由字母、数字、汉字和下划线组成,不能含有空格和除下划线字符有空格和除下划线字符“_”之外的其它任何标点符号,长度之外的其它任何标点符号,长度不能超过不能超过255。必须以字母开头,不区分变量名的大小写。必须以字母开头,不区分变量名的大小写。例如,若以例如,若以Abc命名一个变量
21、,则命名一个变量,则abc、ABC、aBc等都等都认为是同一个变量。认为是同一个变量。不能和不能和VBA的关键字重名。的关键字重名。例如,不能以例如,不能以if、Dim、double等命名变量。等命名变量。类型说明符只能出现在名称的后面。类型说明符只能出现在名称的后面。为了增加程序的可读性,通常在变量名前加一个缩写为了增加程序的可读性,通常在变量名前加一个缩写的前缀来表明该变量的类型。例如用的前缀来表明该变量的类型。例如用StrAbc来命名一个字符来命名一个字符串变量。串变量。.NoImage计算机科学与工程系计算机科学与工程系在程序中使用变量就要给变量定义名称和类型,这就是在程序中使用变量就
22、要给变量定义名称和类型,这就是对变量进行声明。一般变量在使用前应先声明。对变量进行声明。一般变量在使用前应先声明。使用类型说明符号声明变量使用类型说明符号声明变量允许使用类型说明符号来声明常量和变量的数据类型,允许使用类型说明符号来声明常量和变量的数据类型,如:如:varXy%是一个整型变量,是一个整型变量,123%则是一个整型常数,类则是一个整型常数,类型说明符号在使用时始终放在变量或常数的末尾。型说明符号在使用时始终放在变量或常数的末尾。VBA中的中的类型说明符号见表类型说明符号见表9.1中的符号列所示。中的符号列所示。例如:例如:X1%=123 声明声明intX1为一个整型变量为一个整型
23、变量X2#=123.456 声明声明douX2为一个双精度变量为一个双精度变量X3$=Access2003 声明声明strX3为一个字符串变量为一个字符串变量X4!=123.456 声明声明strX3为一个字符串变量为一个字符串变量.NoImage计算机科学与工程系计算机科学与工程系 使用使用Dim语句声明变量语句声明变量格式为:格式为:Dim 变量名变量名 As 数据类型数据类型如果不使用如果不使用“数据类型数据类型”可选项,默认定义的变量为变可选项,默认定义的变量为变体数据类型体数据类型(Variant)。例如:例如:Dim strX As String 声明声明strX为一个字符串变量为
24、一个字符串变量声明声明intX 为整型、为整型、strX为字符串变量为字符串变量Dim intX As Integer,strZ As String Dim x 声明声明x为变体型变量为变体型变量Dim i,j,k As Interger 只有只有k是是Integer类型,类型,i和和j都是都是Variant类型类型没有使用上述两种方法声明数据类型的变量默认为变体没有使用上述两种方法声明数据类型的变量默认为变体类型(类型(Variant)。)。.NoImage计算机科学与工程系计算机科学与工程系VBA允许用户在编写应用程序时,不声明变量而直接使允许用户在编写应用程序时,不声明变量而直接使用,系
25、统会临时为新变量分配存储空间并使用,这就是隐式用,系统会临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是变体数据类型。声明。所有隐式声明的变量都是变体数据类型。例如:例如:NewVar=123。该语句定义了一个隐含型变量,。该语句定义了一个隐含型变量,名字为名字为NewVar,类型为,类型为Variant数据类型,值为数据类型,值为123。在在VBA编程中应尽量减少隐含型变量的使用,大量使用编程中应尽量减少隐含型变量的使用,大量使用隐含型变量对调试程序和识别变量等都会带来困难。隐含型变量对调试程序和识别变量等都会带来困难。.NoImage计算机科学与工程系计算机科学与工程
26、系(3)数组数组数组是由一组具有相同数据类型的变量(称为数组元素)数组是由一组具有相同数据类型的变量(称为数组元素)构成的集合。数组变量由变量名和数组下标组成,在构成的集合。数组变量由变量名和数组下标组成,在VBA中中不允许隐式说明数组,可用不允许隐式说明数组,可用Dim语句来声明数组。数组声明语句来声明数组。数组声明格式为:格式为:Dim 数组名数组名(下标下界下标下界 to 下标上界下标上界)As 数据类型数据类型下标下界的缺省值为下标下界的缺省值为0,数组元素为:数组名,数组元素为:数组名(0)至至 数组数组名名(下标上界下标上界);如果设置下标下界非;如果设置下标下界非0,要使用,要使
27、用to选项。选项。例如:例如:Dim IntArray(10)As Integer这条语句声明了一个有这条语句声明了一个有11个整型数组元素的数组,数组个整型数组元素的数组,数组元素从元素从IntArray(0)至至IntArray(10),每个数组元素为一个整型,每个数组元素为一个整型变量,这里只指定数组元素下标上界来定义数组。变量,这里只指定数组元素下标上界来定义数组。.NoImage计算机科学与工程系计算机科学与工程系VBA中允许指定数组下标范围时使用中允许指定数组下标范围时使用To,如下例所示:,如下例所示:Dim IntArray1(-2 to 3)As Integer该语句定义一个
28、有该语句定义一个有6个整型数组元素的数组,数组元素下个整型数组元素的数组,数组元素下标从标从-2到到3。如果定义多维数组,声明方式为:如果定义多维数组,声明方式为:Dim 数组名数组名(数组第数组第1维下标上界维下标上界,数组第数组第2维下标上界维下标上界)As 数据类型数据类型Dim IntArray2(3,5)As Integer该语句定义了一个二维数组,第一维有该语句定义了一个二维数组,第一维有4个元素,第二维个元素,第二维有有6个元素。个元素。.NoImage计算机科学与工程系计算机科学与工程系VBA中允许指定数组下标范围时使用中允许指定数组下标范围时使用To,如下例所示:,如下例所示
29、:Dim IntArray1(-2 to 3)As Integer该语句定义一个有该语句定义一个有6个整型数组元素的数组,数组元素下个整型数组元素的数组,数组元素下标从标从-2到到3。如果定义多维数组,声明方式为:如果定义多维数组,声明方式为:Dim 数组名数组名(数组第数组第1维下标上界维下标上界,数组第数组第2维下标上界维下标上界)As 数据类型数据类型Dim IntArray2(3,5)As Integer该语句定义了一个二维数组,第一维有该语句定义了一个二维数组,第一维有4个元素,第二维个元素,第二维有有6个元素。个元素。数组中的每个元素都可以当作单个的变量来使用,数组中的每个元素都可
30、以当作单个的变量来使用,引用格式为:数组名引用格式为:数组名(下标值下标值)例如:例如:IntArray2(2,4)=8.NoImage计算机科学与工程系计算机科学与工程系运算符与表达式及函数:运算符与表达式及函数:1.运算符运算符VBA中的运算符可分为:算术运算符、字符串运算符、中的运算符可分为:算术运算符、字符串运算符、关系运算符和逻辑运算符。关系运算符和逻辑运算符。(1)算术运算符算术运算符算术运算符用来执行简单的算术运算。算术运算符用来执行简单的算术运算。VBA提供了提供了8个个算术运算符。算术运算符。运算优先级指的是当表达式中含有多个运算符时,各运运算优先级指的是当表达式中含有多个运
31、算符时,各运算符执行的优先顺序。算符执行的优先顺序。.NoImage计算机科学与工程系计算机科学与工程系运算符含义优先级实例结果指数运算127(1/3)3-取负运算2-ia-3*乘法运算3ia*ia*ia27/除法运算310/ia3.33333333333333整除运算410ia3Mod取模运算510 Mod ia1+加法运算610+ia13-减法运算6ia-10-7.NoImage计算机科学与工程系计算机科学与工程系(2)字符串运算符字符串运算符字符串运算就是将两个字符串连接起来生成一个新的字字符串运算就是将两个字符串连接起来生成一个新的字符串。字符串运算符包括:符串。字符串运算符包括:&和
32、和+。&运算符:用来强制两个表达式作字符串连接。运算符:用来强制两个表达式作字符串连接。需要注意的是:由于符号需要注意的是:由于符号“&”还是长整型的类型定义还是长整型的类型定义符,在字符串变量后使用运算符符,在字符串变量后使用运算符“&”时,变量与运算符时,变量与运算符“&”之间还应加一个空格。之间还应加一个空格。运算符运算符“&”两边的操作数可以是字符型,也可以是数两边的操作数可以是字符型,也可以是数值型。不管是字符型还是数值型,进行连接操作前,系统先值型。不管是字符型还是数值型,进行连接操作前,系统先进行操作数类型的转换,数值型转换成字符型,然后再做连进行操作数类型的转换,数值型转换成字
33、符型,然后再做连接运算。接运算。.NoImage计算机科学与工程系计算机科学与工程系例例9.3“&”运算符应用运算符应用StrX=ABC StrX&“是大写英文字母是大写英文字母”出错出错StrX&是大写英文字母是大写英文字母 结果为结果为“ABC是大写英文字是大写英文字母母”abc&123 结果为结果为“abc123”abc&123 结果为结果为“abc123”123&456 结果为结果为“123456”2+3&=&(2+3)结果为结果为“2+3=5”.NoImage计算机科学与工程系计算机科学与工程系+运算符:用来连接两个字符串表达式,形成一个新运算符:用来连接两个字符串表达式,形成一个新
34、的字符串。的字符串。注意:注意:“+”运算符要求两边的操作数都是字符串。如运算符要求两边的操作数都是字符串。如果两边都是数值表达式时,就做普通的算术加法运算;若一果两边都是数值表达式时,就做普通的算术加法运算;若一个是数字型字符串,另一个为数值型,则系统自动将数值型个是数字型字符串,另一个为数值型,则系统自动将数值型字符串转化为数值,然后进行算术加法运算;若一个为非数字符串转化为数值,然后进行算术加法运算;若一个为非数值型字符串,另一个为数值型,则出错。值型字符串,另一个为数值型,则出错。例例9.4“+”运算符应用运算符应用 1111 +2222 结果为结果为3333 1111 +2222 结
35、果为结果为“11112222”abcd +1212 出错出错4321+1234&100 结果为结果为“5555100”在在VBA中,连接字符串时,用中,连接字符串时,用“&”比用比用“+”更安全。更安全。.NoImage计算机科学与工程系计算机科学与工程系(3)关系运算符关系运算符关系运算符也叫比较运算符,用来对两个表达式的值进关系运算符也叫比较运算符,用来对两个表达式的值进行比较,比较的结果是一个逻辑值,即真(行比较,比较的结果是一个逻辑值,即真(True)或假)或假(False)。用关系运算符连接两个算术表达式所组成的表达)。用关系运算符连接两个算术表达式所组成的表达式叫做关系表达式,式叫
36、做关系表达式,VBA提供了提供了9个关系运算符,如表个关系运算符,如表9.3所所示。示。在使用关系运算符进行比较时,应注意以下规则:在使用关系运算符进行比较时,应注意以下规则:数值型数据按其大小进行比较。数值型数据按其大小进行比较。字符型数据按其字符型数据按其ASCII码值进行比较。码值进行比较。汉字字符大于西文字符。汉字字符大于西文字符。汉字按区位码顺序进行比较。汉字按区位码顺序进行比较。.NoImage计算机科学与工程系计算机科学与工程系运算符含义实例结果=等于“abcd”=”abc”False大于“abcd”abc”True=大于等于“bacd”=”abce”False小于“41”5”T
37、rue=小于等于41=5False不等于“abc”ABC”TrueLike字符串匹配“abc”Like”*c*”True.NoImage计算机科学与工程系计算机科学与工程系例例9.5 关系运算符应用关系运算符应用Dim S 定义变量定义变量SS=(52)结果为结果为TrueS=(2=5)结果为结果为FalseS=(“abcd”“abc”)结果为结果为TrueS=(“王丽王丽”“刘艺刘艺”)结果为结果为TrueS=(#2008/10/12#2006/11/12#)结果为结果为True.NoImage计算机科学与工程系计算机科学与工程系(4)逻辑运算符逻辑运算符逻辑运算也称布尔运算,除逻辑运算也称
38、布尔运算,除Not是单目运算符外,其余是单目运算符外,其余均是双目运算符。由逻辑运算符连接两个或多个关系式,对均是双目运算符。由逻辑运算符连接两个或多个关系式,对操作数进行逻辑运算,结果是逻辑值操作数进行逻辑运算,结果是逻辑值True或或False。VBA的逻辑运算符如表的逻辑运算符如表9.4所示。表所示。表9.5列出了逻辑运算列出了逻辑运算真值表。真值表。运算符优先级含义Not1非,由真变假或由假变真And2与,两个表达式同时为真则结果为真,否则为假Or3或,两个表达式有一个为真则结果为真,否则为假.NoImage计算机科学与工程系计算机科学与工程系例例9.6 逻辑运算符应用逻辑运算符应用D
39、im V 定义变量定义变量VV=(52 And 3=4)结果为结果为FalseV=(52 Or 3=4)结果为结果为TrueV=(abcdabc And 3=4)结果为结果为FalseV=Not(3=4)结果为结果为TrueABNot AA And BA Or BTTFTTTFFFTFTTFTFFTFF.NoImage计算机科学与工程系计算机科学与工程系(5)对象运算符对象运算符对象运算符有对象运算符有“!”和和“.”两种,使用对象运算符指示两种,使用对象运算符指示随后将出现的项目类型。随后将出现的项目类型。!运算符运算符“!”运算符的作用是指出随后为用户定义的内容。使运算符的作用是指出随后为
40、用户定义的内容。使用用“!”运算符可以引用一个开启的窗体、报表或开启窗体运算符可以引用一个开启的窗体、报表或开启窗体或报表上的控件。或报表上的控件。.运算符运算符“.”运算符通常用于引用窗体、报表或控件等对象的运算符通常用于引用窗体、报表或控件等对象的属性。引用格式为:属性。引用格式为:控件对象名控件对象名.属性名属性名。在实际应用中,在实际应用中,“.”运算符与运算符与“!”运算符配合使用,运算符配合使用,用于标识引用的一个对象或对象的属性。用于标识引用的一个对象或对象的属性。.NoImage计算机科学与工程系计算机科学与工程系例如,可以引用或设置一个打开窗体的某个控件的属性。例如,可以引用
41、或设置一个打开窗体的某个控件的属性。Forms!学生信息学生信息!Command2.Enabled=False该语句用于标识该语句用于标识“学生信息学生信息”窗体上的窗体上的“Command2”控件的控件的“Enabled”属性并设置其值为属性并设置其值为“False”。需要注意。需要注意的是:如的是:如“学生信息学生信息”窗体为当前操作对象,窗体为当前操作对象,Forms!学生学生信息信息可以用可以用“Me”来代替。来代替。例如:例如:Me.Command2.Enabled=False 或或 Me!Command2.Enabled=False对象运算符对象运算符含义含义Forms!学生设置学
42、生设置标识打开的标识打开的“学生设置学生设置”窗体窗体Forms!学生设置学生设置!Label1标识打开的标识打开的“学生设置学生设置”窗体中的窗体中的“Label1”控件控件Reports!学生名单学生名单标识打开的标识打开的“学生名单学生名单”报表报表.NoImage计算机科学与工程系计算机科学与工程系2.表达式表达式(1)表达式的组成表达式的组成表达式由常量、变量、运算符、函数和括号等按一定的表达式由常量、变量、运算符、函数和括号等按一定的规则组成,表达式通过运算得出结果,运算结果的类型由操规则组成,表达式通过运算得出结果,运算结果的类型由操作数的数据和运算符共同决定。作数的数据和运算符
43、共同决定。在在VBA中,逻辑量在表达式中进行算术运算时,中,逻辑量在表达式中进行算术运算时,True值值被当成被当成-1,False值被当成值被当成0来处理。来处理。(2)表达式的书写规则表达式的书写规则只能使用圆括号且必须成对出现。只能使用圆括号且必须成对出现。乘号不能省略。乘号不能省略。A乘以乘以B应写成应写成A*B,而不是,而不是AB。表达式从左至右书在同一基准上书写,无高低、大小表达式从左至右书在同一基准上书写,无高低、大小写区分。写区分。.NoImage计算机科学与工程系计算机科学与工程系(3)算术运算表达式的结果类型算术运算表达式的结果类型在算术运算表达式中,参与运算的操作数可能具
44、有不同在算术运算表达式中,参与运算的操作数可能具有不同的数据精度,的数据精度,VBA规定运算结果的数据类型采用精度高的数规定运算结果的数据类型采用精度高的数据类型。据类型。(4)运算优先级运算优先级不同类型运算符的优先级为:不同类型运算符的优先级为:算术运算符算术运算符字符运算符字符运算符关系运算符关系运算符逻辑运算符逻辑运算符.NoImage计算机科学与工程系计算机科学与工程系3.函数函数VBA提供了近百个内置的标准函数,在设计数据库时可提供了近百个内置的标准函数,在设计数据库时可以直接引用这些函数。以直接引用这些函数。函数的使用形式为:函数的使用形式为:函数名函数名(,参数参数2,参数参数
45、3)其中,参数可以是常量、变量或表达式,可以有一个或其中,参数可以是常量、变量或表达式,可以有一个或多个。每个函数被调用时,都会有一个返回值。多个。每个函数被调用时,都会有一个返回值。内置函数按其功能可分为数学函数、转换函数、字符串内置函数按其功能可分为数学函数、转换函数、字符串函数、日期函数和格式输出函数。函数、日期函数和格式输出函数。.NoImage计算机科学与工程系计算机科学与工程系函数函数函数说明函数说明应用实例应用实例返回结果返回结果Abs(N)取绝对值取绝对值Abs(-2.8)2.8Int(N)返回数值表达式的整数部分,若参返回数值表达式的整数部分,若参数为负值,返回小于等于参数的
46、第数为负值,返回小于等于参数的第一个负数一个负数Int(2.8)Int(-2.8)2-3Exp(N)以以e为底数的指数函数,即为底数的指数函数,即exExp(3)20.086Log(N)以以e为底的自然对数为底的自然对数Log(10)2.3Sqr(N)计算数值表达式的平方根计算数值表达式的平方根Sqr(25)5Sin(N)正弦函数正弦函数Sin(0)0Cos(N)余弦函数余弦函数Cos(0)1Round(N)对操作数四舍五入取整对操作数四舍五入取整Round(-4.2)Round(7.8)-48Rnd(N)产生随机数产生随机数Rnd01之间的数之间的数(1)数学函数数学函数数学函数与数学中的定
47、义一致,完成数学计算功能。数学函数与数学中的定义一致,完成数学计算功能。.NoImage计算机科学与工程系计算机科学与工程系(2)转换函数转换函数转换函数主要实现数据类型的转换。转换函数主要实现数据类型的转换。函数函数函数说明函数说明应用实例应用实例返回结果返回结果Asc(C)返回字符串首字符的返回字符串首字符的ASCII值值Asc(abcd)97Chr(N)ASCII值转换为字符串值转换为字符串Chr(97)aUcase(C)将字符串中的小写字母转换为大写字母将字符串中的小写字母转换为大写字母Lcase(ABcd)ABCDLcase(C)将字符串中的大写字母转换为小写字母将字符串中的大写字母
48、转换为小写字母Lcase(ABcd)abcdStr(N)将数值表达式值转换成字符串将数值表达式值转换成字符串Str(-88)-88Val(C)将数字字符串转换成数值型数据将数字字符串转换成数值型数据Val(11 22)Val(45edc6)112245DateValue(C)将字符串转换成日期值将字符串转换成日期值DateValue(2008-08-08)#2008-08-08#Hex(N)十进制数转换成十六进制数十进制数转换成十六进制数Hex(120)78Space(N)返回个数为数值表达式值的空格字符返回个数为数值表达式值的空格字符Space(4)(4个空格)个空格).NoImage计算机
49、科学与工程系计算机科学与工程系(3)字符串函数字符串函数字符串函数用来处理字符型变量或字符串表达式。要注意字符串函数用来处理字符型变量或字符串表达式。要注意的是:在的是:在VBA中,字符串长度以字为单位,即每个西文字符或中,字符串长度以字为单位,即每个西文字符或每个汉字都作为一个字,占两个字节。每个汉字都作为一个字,占两个字节。函数函数函数说明函数说明应用实例应用实例返回结果返回结果InStr(N1,C1,C2,M)在在C1中从中从N1开始找开始找C2,省略,省略N1从头开始找,找不到为从头开始找,找不到为0Instr(1,信息系统信息系统,信信)1Len(C)字符串长度字符串长度Len(信息
50、系统信息系统)4LenB(C)字符串所占的字节数字符串所占的字节数LenB(信息系统信息系统)8Left(C,N)取字符串左边取字符串左边N个字符个字符Left(信息系统信息系统,2)信息信息Right(C,N)取字符串右边取字符串右边N个字符个字符Right(信息系统信息系统,2)息系统息系统Mid(C,N1,N2)取子字符串,在取子字符串,在C中从中从N1位开始位开始向右取向右取N2个字符个字符Mid(信息系统信息系统,1,3)信息系信息系Ltrim(C)去掉字符串左边空格去掉字符串左边空格Ltrim(信息系统信息系统)信息系统信息系统Rtrim(C)去掉字符串右边空格去掉字符串右边空格R