ACCESS实例教程(第8章vba).ppt

上传人:文库蛋蛋多 文档编号:2975539 上传时间:2023-03-07 格式:PPT 页数:149 大小:2.39MB
返回 下载 相关 举报
ACCESS实例教程(第8章vba).ppt_第1页
第1页 / 共149页
ACCESS实例教程(第8章vba).ppt_第2页
第2页 / 共149页
ACCESS实例教程(第8章vba).ppt_第3页
第3页 / 共149页
ACCESS实例教程(第8章vba).ppt_第4页
第4页 / 共149页
ACCESS实例教程(第8章vba).ppt_第5页
第5页 / 共149页
点击查看更多>>
资源描述

《ACCESS实例教程(第8章vba).ppt》由会员分享,可在线阅读,更多相关《ACCESS实例教程(第8章vba).ppt(149页珍藏版)》请在三一办公上搜索。

1、ACCESS实例教程,模块的操作(第8章),1.模块的基本概念2.VBA程序设计基础3.VBA函数的使用4.模块的建立与使用5.过程与参数传递,本章要点:,VBA(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言;其语法结构与Visual Basic编程语言互相兼容;VB是微软公司推出的可视化BASIC语言,是一种编程简单、功能强大的面向对象开发工具,我们可以像编写VB程序那样来编写VBA程序。采用的是面向对象的编程机制和可视化的编程环境。用VBA语言编写的代码,将保存在Access中的一个模块里,并通过类似在窗体中激发宏的操作

2、那样来启动这个模块,从而实现相应的功能。,VBA简介,注意:VB语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在Windows平台上;而VBA则不同,其编程环境和VBA程序都必须依赖Office应用程序(如Access、Word、Excel等)。,VBA简介,VBA编程环境在Access 2003提供的“模块”数据库对象中,使用VBA程序设计语言,在不同的模块中实现VBA代码设计,可以解决实际开发中的复杂应用。要用Access 2003来完成一个实际的数据库应用系统,就应该掌握VBA。,8.1 认识模块对象,模块是由声明、语句和过程组成的集合,以VBA(Visual Basic

3、 for Application)语言编写,作为一个已命名的单元存储在一起。模块有2种类型:类模块和标准模块。使用模块可以在实际开发中实现较为复杂的功能。,(1)模块:模块由一个或多个过程组成,每个过程实现一个或几个功能。模块的执行通过特定事件激发相应的事件过程实现。(2)事件过程:事件过程是一组代码,用于响应窗体事件或报表事件。(3)类模块:类模块是包含代码和数据的集合,可以看作是没有物理表示的控件,总是与某一特定的窗体或报表相关联。窗体模块和报表模块都属于类模块。(4)标准模块:标准模块是代码的集合,包含的过程不与任何其他对象相关联,是数据库对象使用的公共过程,保存在数据库窗口中。,8.1

4、.1 模块的基本概念,8.1.2 启动Access的编程界面,Access的编程界面称为VBE(Visual Basic Editor),是Microsoft Office所有组件公用的程序编辑系统。方法1:在窗体或报表设计视图中选控件单击标准工具栏的“生成器”按钮在“选择生成器”对话框中选择“代码生成器”。方法2:右击窗体或报表设计视图中控件快捷菜单中选“事件生成器”“选择生成器”对话框中选择代码生成器”。,8.1.3 VBE窗口VBE窗口由工具栏、工程资源管理器窗口、属性窗口、代码窗口和立即窗口组成。,工程窗口选择对象,属性窗口选择对象的属性,代码窗口,选择事件,(1)工程窗口 也称工程资

5、源管理器,一个数据库应用系统就是一个工程,系统中的所有类模块及标准模块对象都在该窗口中显示出来。,类模块,标准模块,(2)属性窗口 属性窗口列出了选定对象的属性,可以在设计时查看、改变这些属性。当选取了多个控件时,属性窗口会列出所有控件的共同属性。,(3)代码窗口 代码窗口用来显示、编写以及修改VBA 代码。实际操作中,可以打开多个代码窗口,查看不同窗体或模块中的代码,代码窗口之间可以进行复制和粘贴。,对象框,过程框,编写模块对象的代码在代码窗口进行。(1)窗口顶部有2个组合框,左边对象框显示所有对象名称,右边过程框显示当前对象能识别的所有事件名称。选定一个对象,再选定一个事件,系统会自动生成

6、相应事件过程的起始行与结束行,只须在两行中间添加过程代码即可。“通用”过程可以被所有控件调用。某控件的过程只在关联事件中有效。(2)窗口中央代码区有声明区和过程区,声明区中声明模块使用的变量,过程区显示一个或多个过程,之间用一条灰线分隔。(3)窗口底部有2个按钮,单击“过程视图”按钮,只显示当前过程。单击右边“完整的模块视图”按钮,窗口显示全部过程。,8.1.4 标准工具栏,例8-1:创建一个类模块。1、打开数据库;2、新创建窗体名称为w1;3、在窗体中添加命令按钮名字为c1;4、选择c1打开属性【单击】打开【代码生成器】;,Private Sub Command0_Click()DoCmd.

7、CloseEnd Sub,DoCmd为对象用来调用内置的方法,Close关闭窗体,例8-1:创建一个类模块。,对象框,过程框,例8-2:创建一个标准模块。,1、打开数据库;2、选择【模块】对象 单击【新建】按钮;3、在VBE中编辑如下程序;,过程名为aa,x,y为整型变量,z为整型变量,存放x和y的乘积。显示信息框,例8-2:创建一个标准模块。,4、保存模块名为mj;5、新创建窗体名称为w2;6、在窗体中添加两个文本框名称分别为t1,t2;7、添加命令按钮名字为c1;8、选择c1打开属性【单击】打开【代码生成器】;,调用过程aa,并将文本框的值传递给aa,8.1.7 使用提示与帮助,在代码窗口

8、输入代码时,系统会自动显示提示信息,包括关键字列表、属性列表、过程参数列表等,在列表中选取一项后双击鼠标,所选值会自动添加到当前光标处。,8.2 VBA程序设计基础,8.2.1 面向对象的程序设计的基本概念,(1)对象 在自然界中,一个对象就是一个实体,如一辆汽车就是一个对象。在面向对象的程序设计中,对象代表应用程序中的元素,如表、窗体、按钮等。(2)属性 属性是对象的特征。如汽车有颜色和型号属性,按钮有标题和名称属性。对象的类别不同,属性会有所不同。同类别对象的不同实例,属性也有差异。例如,同是命令按钮,名称属性不允许相同。,(3)事件 事件是对象能够识别的动作。如按钮可以识别单击事件、双击

9、事件等。在类模块每一个过程的开始行,都显示对象名和事件名。如:Private Sub c1_Click()。(4)方法 方法是对象能够执行的动作,决定了对象能完成什么事。不同对象有不同的方法。如close方法能关闭一个窗体。,(5)集合 集合由许多与对象有关的键和值组成,其中的键和值是配对的。如一本书是一个对象,书的页码是键,页码对应的内容是值。所有配对的页码和内容组成了书对象的集合。(6)过程 过程是由代码组成的单元,包含一系列计算语句和执行语句。每一个过程都有名字,过程名不能与所在模块的模块名相同。过程有两种类型:sub过程(无返回值),function过程(有返回值)。,例8-3:创建一

10、个类模块,动态设置控件属性,(1)在窗体ct中创建一个文本框名称为t1。(2)在窗体ct中创建一个标签名称为b1标题为“欢迎你!”。(3)在窗体ct中创建三个命令按钮名称分别为c1、c2、c3标题分别为“红色”、“绿色”、“蓝色”。,(4)设置各按钮的前景色,在属性窗口可查看颜色值。,(5)c1的click事件代码:t1.BackColor=255 b1.ForeColor=255,(6)c2的click事件代码:t1.BackColor=33792 b1.ForeColor=33792(7)c3的click事件代码:t1.BackColor=16711680 b1.ForeColor=167

11、11680,执行结果:,Docmd是Access的一个特殊对象,用来调用内置方法,在程序中实现对Access的操作,诸如打开窗口、关闭窗体、打开报表、关闭报表等。DoCmd 对象的大多数方法都有参数,有些参数是必需的,有些则是可选的。若省略可选参数,参数将采用默认值。,8.2.2 Docmd对象,(1)用DoCmd 对象打开窗体 格式:DoCmd.OpenForm 窗体名 功能:用默认形式打开指定窗体。例如:DoCmd.OpenForm 文本框练习,(2)用DoCmd 对象关闭窗体 格式1:DoCmd.Close acForm,窗体名 功能:关闭指定窗体。例如:DoCmd.Close acFo

12、rm,文本框练习 格式2:DoCmd.Close 功能:关闭当前窗体。(3)用DoCmd 对象打开报表 格式:DoCmd.OpenReport 报表名,acViewPreview 功能:用预览形式打开指定报表。例如:DoCmd.OpenReport 工资报表,acViewPreview,(4)用DoCmd 对象关闭报表 格式1:DoCmd.Close acReport,报表名 功能:关闭指定报表。例如:DoCmd.Close acReport,工资报表 格式2:DoCmd.Close 功能:关闭当前报表。(5)用DoCmd 对象运行宏 格式:DoCmd.RunMacro 宏名 功能:运行指定宏

13、。例如:DoCmd.RunMacro 宏1(6)用DoCmd 对象退出Access。格式:DoCmd.Quit 功能:关闭所有Access对象和Access本身。,(1)在窗体中建立5个按钮名称分别为c1、c2、c3、c4、c5标题分别为“打开文本框练习窗体”、“关闭文本框练习窗体”、“打开工资报表”、“关闭工资报表”、“退出Access”。,例8-4:使用DoCmd对象,(2)c1代码:DoCmd.OpenForm 文本框练习(3)c2代码:DoCmd.Close acForm,文本框练习(4)c3代码:DoCmd.OpenReport 工资报表,acViewPreview(5)c4代码:D

14、oCmd.Close acReport,工资报表(6)c5代码:DoCmd.Quit,(7)转到窗体视图单击不同按钮执行不同操作。,8.2.3 数据类型与数据类型转换,VBA中的基本数据类型VBA在数据类型和定义方式上均继承了传统的Basic语言的特点。Access 数据表中的字段使用的数据(OLE对象和备注字段数据类型除外)在VBA中都有对应的类型。在VBA中,数据类型用来决定变量可以保存何种数据。VBA支持多种数据类型,为用户编程提供了方便。,8.2.3 数据类型与数据类型转换,(1)标准数据类型,1.数值型数据类型包括:Byte、Integer、Long、Single、Double和Cu

15、rrency。(1)Byte 以一个字节的无符号二进制数存储,取值范围为0255。(2)整数(integer和Long)整数是不带小数点和指数符号的数,在机器内以二进制补码形式表示。整型(Integer)长整型(Long)例如:345、-345、345%均表示整型数。345&、-345&均表示长整型数。,(3)浮点数(single和Double)浮点数也称实型数或实数,是带有小数部分的数值。它由三部分组成:符号、指数和尾数。单精度型(Single):以4个字节存储,符号1位,指数8位,尾数23位。用E来表示指数。双精度型(Double):以8个字节存储,符号1位,指数11位,尾数52位。用D来

16、表示指数。例如:345!、-345.12、0.345E+3 均表示单精度浮点数,345#、-345.12#、0.345E+3#、0.345D+3 均表示双精度浮点数。,(4)货币型(Currency)货币数据类型是为表示钱款而设置的。该类型数据以8个字节存储,精确到小数点后四位,小数点前有15位,小数点后4位以后的数字将被舍去。例如:345、345.12 均表示货币型数据。2.字符型数据类型字符串是一个字符序列,由ASCII字符组成,包括标准的ASCII字符和扩展ASCII字符及汉字等例如:“345”、“Access 程序设计”等均表示字符型数据。表示空字符串,表示有一个空格的字符。,3.日期

17、型数据类型日期型数据用来表示日期信息,按8字节的浮点数来存储,表示范围:日期范围为1000年1月1日到9999年12月31日,而时间范围为0:00:0023:59:59。日期型数据有两种表示方法:一种是在字面上可被认为日期和时间的字符,表示格式为mm/dd/yyyy或mm-dd-yyyy。日期文字须以数字符号(#)括起来。例如,#April 1,2002#10-11-2005#2005-10-11 10:30:00 PM#。,3.日期型数据类型,另一种是以数字序列表示,当其他的数值类型要转换为 Date 型时,小数点左边的数字代表日期,而小数点右边的数字代表时间,0为午夜,0.5为中午12点,

18、负数代表的是1899年12月31日之前的日期和时间。,4.变体数据类型变体类型数据(Variant)是一种可变的数据类型,可以表示任何值,包括数值、字符串及日期等。变体类型数据可以包含Empty、Error、Nothing和Null特殊值。在使用时,可以使用VarType与TypeName函数来决定如何处理Variant中的数据。VBA规定,如果没有使用Dim As 数据类型显式声明或使用符号来定义变量的数据类型,系统默认为变体类型(Variant)。,5.逻辑数据类型逻辑数据类型(Boolean)用于逻辑判断,亦称布尔型。其值为逻辑值,用两个字节存储,它只有True(真)或False(假)两

19、个值。当逻辑数据转换成整型数据类型时,True转换为-1,False转换为0。当将其他类型数据换成逻辑数据时,非0数据转换为True,0转换为False。6.对象数据类型 对象型数据(Object)用来表示图形、OLE对象或其他对象,用4个字节存储,对象变量可引用应用程序中的对象。,(2)数据类型转换函数,例8-5:在立即窗口中计算函数值(1)在VBE界面“视图”菜单“立即窗口”,显示立即窗口。(2)输入表达式x=“true”回车输入表达式y=“false”回车输入表达式?x+y回车,显示结果为:truefalse。(3)输入表达式?cbool(x)+cbool(y)回车,显示结果为:-1。说

20、明:每行写完后必须回车才能生效。问号与print语句相同,在立即窗口显示计算结果。,7.用户定义的数据类型 创建自定义的数据类型的语句是Type,用户自定义类型可包含一个或多个基本数据类型的数据元素、数组或一个先前定义的用户自定义类型。Type语句的基本格式:Private|Public Type 数据类型名域名1 As 数据类型域名2 As 数据类型End Type,定义格式:type 数据类型名 域名1 as 数据类型 域名2 as 数据类型 end type例如:type student xh as string*6 xm as string xb as string*1 nl as i

21、nteger end type,8.2.2 常量 常量是指在程序运行的过程中,其值不能被改变的量。常量的使用可以增加代码的可读性,并且使代码更加容易维护。在Access 2003中,常量的类型有4种:直接常量符号常量固有常量系统定义常量(1)直接常量 如:10,20%(整型),123.0,345#(双精度),345.12(货币型),“AB”,“VBA程序设计”等,8.2.2 常量(2)符号常量 在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。VBA中使用关键字Const 声明符号常量。其格式如下:Const 常量名 常

22、数表达式 如:Const PI#=3.1415926,(2)符号常量,说明:符号常量名一般用大写字母,以便与变量名区分。如果符号常量定义在模块声明区,所有模块的过程都能使用该变量,通常在前面加上Global或Public。如:Public Const PI=3.14如果符号常量定义在事件的过程中,该符号常量只在本过程中可用。符号常量定义时不用指明数据类型。,(3)固有常量(内置常量)固有常量以两个前缀字母指明了定义该常量的对象库。主要用来作为DoCmd对象的参数。这些内部常量名不能作为用户自定义的变量名或符号常量来自Access库的常量以“ac”开头;来自ADO库的常量以“ad”开头而来自Vi

23、sual Basic库的常量则以“vb”开头。例如:acForm、adAddNew、vbCurrency(4)系统定义常量 指VBA系统预先定义好的,用户可以直接引用的量。例如:True、False和Null。系统定义常量可以在应用程序中使用。,8.2.3 变量变量是指在程序运行过程中值会发生变化的数据。变量的三要素:变量名、变量类型、变量的值。变量的命名规则。对变量进行声明可以使用类型说明符号、Dim语句和DefType语句。(1)变量命名规则由字母、数字、下划线组成,用英文字母开头。不能包含空格以及除下划线之外的标点符号。不能用VBA的关键字(如:dim)和保留字(如:str)。字符个数不

24、得多于255个。变量名不区分大小写。,说明:常量名的命名规则与变量名的命名规则相同,8.2.3 变量(2)隐含型变量 隐式声明在使用一个变量之前并不必先声明这个变量。这个变量只在当前过程中有效,类型为变体数据类型。用户可以通过将一个值指定给变量名的方式来建立隐含型变量。例如:NewVar=1234。,格式:dim 变量名 as 类型说明:如果不用as定义类型,则变量为变体类型。变体类型变量比其他类型变量占用更多的内存资源。可以用dim同时定义多个变量,变量之间用西文逗号分隔,每一个变量都应该用as声明类型。例如:dim a1 as integer,a2 as boolean用dim定义的变量是

25、局部变量,会按照数据类型自动设置默认值。,(3)用dim语句声明变量,如:Dim name as string Dim x as integer,y as integer Dim i说明:第二条语句同时声明了两个变量;i为变体类型,可以储存任何类型数据。变量赋值Name=张小山X=1改变变量的值X=x+1说明:将x的值增加1,在变量名后加VBA的类型说明符,隐式的声明了变量类型。例如:b1%=125 变量b1是整型,值是125。既没有显式声明,也没有加类型说明符,隐式声明了变体型变量。例如:c1=125 变量c1是变体型,值是125。隐含型变量,(4)用类型说明符声明变量类型,下面是一个简单的

26、程序,其使用的变量a,b,Sum都没有事先定义。Private Sub Form_Click()Sum=0隐含型变量 a=10 b=20 Sum=a+b Print Sum=;SumEnd Sub,良好的编程习惯应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。,声明而未赋值的变量的值为:数值型变量初始化为0;字符型变量为零长度字符串;变体型变量初始化为 Empty。,变量的初始化,(5)一个特殊的模块变量本地窗口打开时,自动生成一个名为“Me”的特殊模块变量。对于类模块,定义为Me。Me是对象的引用,引用当前模块中当前类的实例。Me变量不需要专门定义,直接使用

27、即可。例如:用代码定义“学生信息”窗体中“Lab”标签的标题属性,以下两种方法效果是一样的:标准方法:Forms!学生信息!Lab.Caption=学生信息浏览常用方法:Me!Lab.Caption=学生信息浏览,8.2.5 变量的作用域和生命周期,1变量的作用域 变量的作用域是变量在程序中起作用的范围。分3个层次,从低到高依次为:局部、模块、全局。(1)局部变量 又称为本地变量,仅在声明变量的过程中有效。在过程和函数内部用dim声明或不用声明接使用的变量,都是局部变量。局部变量在本地拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。(2)模块变量 模块变量在所声明模块的所有函数和所有过

28、程都有效,变量定义在模块所有过程之外的起始位置,通常是窗体变量或标准模块变量。(3)全局变量 全局变量又称为公共变量,定义在标准模块所有过程之外,在所有模块的所有过程和函数中都有效。定义格式:public 变量名 as 数据类型,变量的生命周期是指变量从首次出现到变量消失的代码执行时间。变量首次出现是指声明变量并为其分配存储空间,变量消失是指变量所在的程序执行完毕。局部变量:的生命周期从过程或函数被调用到运行结束。全局变量:的生命周期从声明到Access应用程序结束。过程中用dim定义的变量,每次调用过程时都重新开始,过程结束时立即消失。用static代替dim定义变量,可以在过程实例间保留局

29、部变量的值。用static定义的变量称为静态变量,作用范围与dim相同,在整个模块执行时一直存在。,2变量的生命周期,例8-6:用static和dim定义局部变量,(1)在窗体中建立2个文本框分别命名为t1和t2附加标签的标题分别为“静态变量”和“局部变量”。(2)在窗体中建立命令按钮名称为c1标题为“计算”。,(3)c1的click代码:Static x As Integer x变量的生命周期为全程 Dim y As Integer y变量的生命周期为局部 x=x+1:y=y+1 t1=x:t2=y,(4)执行时不断单击命令按钮,静态变量文本框中的值每次增加1,而局部变量文本框中的值总是1。

30、,1.数组的概念数组是由一组具有相同数据类型的变量(称为数组元素)构成的集合。为了识别数组中不同的元素,数组元素可以通过下标来访问,数组下标默认从0开始。说明:(1)数组要先定义后使用,VBA不允许隐式声明数组。(2)同一过程中数组名不能与其他变量重名。,8.2.7 数组,2声明一维数组格式1:dim 数组名(下标上限)as 数据类型格式2:dim 数组名(下标下限 to 下标上限)as 数据类型例如:dim a(6)as integer功能:声明了有7个元素的数组a,元素下标从0到6,默认值均为0。例如:dim b(1 to 6)as string功能:声明了有6个元素的数组b,下标从1到6

31、,默认值均为空串。说明:(1)如果不定义数组下标的下限,默认下标下限为0。(2)数组定义中的参数必须是常数。(3)如果使用as语句定义数组类型,同一数组只能存放相同类型数据。,声明数组后,每个数组元素都被当作单个变量使用。一维数组元素的引用格式:数组名(下标)数组赋值与引用:bAge(0)50 bAge(1)20 bAge(2)70 Dim sum as Byte Sum=bAge(0)+bAge(1)+bAge(2),3声明多维数组格式:dim 数组名(下标上限1,下标上限2,)as 数据类型例如:dim c(3,4)as integer功能:声明有20个元素的数组c,行下标从0到3,列下标

32、从0到4。例如:dim d(1 to 3,2 to 4)as integer功能:声明有9个元素的数组d,行下标从1到3,列下标从2到4。4使用数组声明数组后,每个数组元素都被当作单个变量使用。一维数组元素的引用格式:数组名(下标)二维数组元素的引用格式:数组名(下标1,下标2),例8-7:使用符号常量和数组,(1)在窗体建文本框名称为t1。(2)在窗体建命令按钮名称为c1标题为“确定”。(3)命令按钮c1的单击事件代码:,const AA=“欢迎你!”定义符号常量 dim b(1)As String 定义字符串数组 b(0)=AA b(1)=t1 MsgBox b(0)&Chr(13)&Ch

33、r(13)&b(1),vbInformation,消息框说明:Chr(13)生成一个回车,用单引号开始的字符串为注释语句。,B(0)元素为“欢迎你”B(1)元素为文本框中的内容,(4)转到窗体视图在文本框中输入“张三”单击“确定”按钮。,数组有两种类型:固定大小的数组动态数组前者总保持同样的大小;后者在程序中可根据需要动态地改变数组的大小。,在定义数组时可以不指定下标,而改在程序运行需要时再指定,即数组元素的数量是可动态改变的。例如:班级的学生数量人数不确定。定义一个动态数组的方法:先用 Dim 定义数组;例如:Dim bAges()As Byte然后用 ReDim 声明数组大小;例如:ReD

34、im bAges(N-1)在定义常量、变量或数组时,如果未指定变量类型,系统默认为Variant型数据。,动态数组,例如:8-8 建立动态数组164,1、新建一个窗体;2、在窗体中创建2个文本框名称分别为t1和t2 附加标签分别为“输入字符串1:”和“输入字符串2:”3、在窗体中创建一个命令按钮名称为c1 c1的click事件代码为:Private Sub c1_Click()Dim aa()As String 定义aa为动态字符数组ReDim aa(5)aa数组为5个元素aa(5)=t1ReDim Preserve aa(9)重新分配空间,保留原有数据aa(9)=t2MsgBox aa(5)

35、&aa(9)ReDim aa(5,5)aa(1,1)=我现在是二维数组!MsgBox aa(1,1)End Sub,运行结果:,8.2.8 用户定义数据类型,用户定义数据类型包含几个分量,先用dim、public或static将变量声明为用户定义数据类型,然后给每个分量赋值。给分量赋值的格式为:变量名.分量名=值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。例如,用户定义数据类型为student,使用该变量代码如下:dim stu as student stu.xh=080101 stu.xm=李四 stu.xb=女 stu.nl=19,8.2.8 用户定义数据类型,用户定义数据类

36、型包含几个分量:先用dim、public或static,将变量声明为用户定义数据类型;dim stu as student然后给每个分量赋值。给分量赋值的格式为:变量名.分量名=值。给用户定义数据类型的变量赋值,就是给变量的每个分量赋值。例如:用户定义数据类型为student,使用该变量代码如下:,例如:type student xh as string*6 xm as string xb as string*1 nl as integer end type,dim stu as student stu.xh=080101 stu.xm=李四 stu.xb=女 stu.nl=19,用with语

37、句简化变量的赋值,每个分量从点开始写,省略变量名。如:dim stu as student with stu.xh=080101.xm=李四.xb=女.nl=19 end with,例如:8-9 用户自定义数据类型练习,1、新建窗体;2、在窗体中建立2个文本框名称分别为t1和t2 附加标签分别为“请输入姓名:”和“请输入性别:”;3、在窗体中创建一个命令按钮名称为c1 标题为“确定”;4、进入VBE,在通用声明区编写代码如下:Option Compare DatabasePrivate Type student 定义用户数据类型 xm As String xb As String*1End T

38、ypeConst AA=姓名:定义符号常量Const BB=性别:,例如:8-9 用户自定义数据类型练习,5、c1的click事件代码为:Private Sub c1_Click()Dim stu As student 定义用户数据类型变量stu.xm=t1 给每个分量赋值stu.xb=t2MsgBox AA&stu.xm&Chr(13)&BB&stu.xb,vbInformation,消息框End Sub,8.2.9 运算符与表达式 1.运算符VBA中的运算符可分为4种类型:算术运算符、字符串运算符、关系运算符和逻辑运算符。(1)算术运算符 算术运算符是常用的运算符,用来执行简单的算术运算,

39、VBA提供了8个算术运算符。乘幂()、负数(-)乘法(*)、除法(/)、整数除法()、求模(mod)、加法(+)、减法(-)。,运算符算术运算符,将两个操作数进行大小比较,结果为逻辑值,即真(True)或假(False)。相等=、不相等、大于、大于等于=、小于、小于等于=。注意:字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。,(2)关系运算符,(2)关系运算符,将操作数进行逻辑运算,结果是逻辑值 与and、或or、非not。对两个逻辑值进行比较,结果仍然是逻辑值。,(3)逻辑运算符,(3)逻辑运算符,(4)字符串运算符 字符串运算就是将两个字符串连接起来生成一个

40、新的字符串。字符串运算符包括:&运算符+运算符,&运算符:将两个不同类型的数据(表达式的值)作字符串连接。例如:1&“+”&2&“等于”&1+2 结果为:“1+2等于3”,注意:由于符号“&”还是长整型的类型定义符,在字符串变量后使用运算符“&”时,变量与运算符“&”之间应加一个空格。运算符“&”两边的操作数可以是字符型,也可以是数值型。不管是字符型还是数值型,进行连接操作前,系统先进行操作数类型转换,数值型转换成字符型,然后再做连接运算。例如:12&56 结果为“1256”,+运算符:用来连接两个字符串表达式,形成一个新的字符串。注意:“+”运算符要求两边的操作数都是字符串。【例】“+”运算

41、符应用示例。“4321”+1234 结果为数值:5555“4321”+“1234”结果为 43211234abcd+1234 出错4321+“1234”&100 结果为 5555100,(5)对象运算符对象运算符用来指示随后出现的项目类型,有叹号运算符!和点运算符.。,(1)叹号运算符!,引用一个窗体、报表或控件。例如:forms!学生信息窗体!t1(2)点运算符.,引用对象的属性。例如:Me!t1.forecolor=255,2.表达式(1)表达式的组成 表达式由常量、变量、运算符、函数、逻辑量和括号等按一定的规则组成的式子。表达式通过运算得出结果,运算结果的类型由操作数的数据和运算符共同决

42、定。,书写规则(1)运算符不能相邻。例a+-b是错误的。(2)乘号不能省略。例x 乘以y 应写成:x*y。(3)括号必须成对出现,均使用圆括号。(4)表达式从左到右在同一基准上书写,无高低。运算优先级 算术运算符 连接运算符 关系运算符 逻辑运算,例:用人单位招聘:年龄小于40岁的女性,学历专科或本科。年龄40,性别=“女”,(学历=“专科”,学历=“本科”)And And Or,例:算术表达式:正确的VBA表达式:3=x And x=7错误的VBA表达式:3=x=7 或 3=x Or x=7,考虑:若分别写成:年龄40 And 性别=女 And(学历=专科 And 学历=本科)年龄40 Or

43、 性别=女 Or(学历=专科 Or 学历=本科),8.3 函数函数实际上是系统事先定义好的内部程序,用来完成特定的功能。VBA提供了大量的内部函数,供用户在编程时使用。函数的调用形式为:函数名(参数表)其中,参数可以是常量、变量或表达式,可以有一个或多个。每个函数被调用时,都会有一个返回值。根据函数的不同,参数与返回值都有特定的数据类型与之对应。内置函数按其功能可分为数学函数、转换函数、字符串函数、日期函数和格式输出函数。,1算术函数(1)abs(x),返回x的绝对值。(2)int(x),返回x的整数部分,x0,每次产生不同随机数;若x=0,产生最近生成的随机数;若x0时可直接写rnd,省略括

44、号和参数。,8.3.1 VBA常用函数,第3章中介绍过的函数在此不作详细介绍。,例如:int(100*rnd),产生099之间的随机整数。int(101*rnd),产生0100之间的随机整数。int(100*rnd+1),产生1100之间的随机整数。int(100*rnd+100),产生100199之间的随机整数。int(101*rnd+100),产生100200之间的随机整数。(5)round(x,n),n是小数位数,对x的小数做四舍五入,返回有n位小数的x值。例如:round(12.735,2),返回12.74。,2字符串函数(1)len(x),返回x的长度,即字符个数。要求x为字符串类型

45、。(2)space(n),返回由n个空格组成的字符串,n为数字。(3)ucase(x),将x中的小写字母转大写。lcase(x),将x中的大写字母转小写。(4)trim(x),去掉x的首部和尾部空格。ltrim(x),去掉x的首部空格。rtrim(x),去掉x的尾部空格。(5)instr(起始位置,字串s1,字串s2,比较方式);返回字串s2在字串s1中最早出现的位置,返回值是一个整数。例如:P169,3日期时间函数(1)weekday(x,n),返回17的整数,表示星期几。说明:n为可选项,默认值1。当n取值为1时,星期天返回1,星期一返回2,依次类推。若n取值为2,则星期一返回1,星期二返

46、回2,星期天返回7。(2)hour(x),返回x的小时数。(3)minute(x),返回x的分钟数。(4)second(x),返回x的秒数。,4类型转换函数(1)asc(x),返回首字符的ASCII码,其中,x是字符串或字符串变量名。说明:ASCII码是美国标准信息转换码,共128个字符,对应十进制数0127。(2)chr(n),将数字n转换成相应字符,n的取值范围0127。(3)str(n),将数字转换为字符串,n是数字或数字表达式。说明:当数字转换为字符串时,总会在前头留一个符号位,如果是正数,符号位显示空格。(4)val(x),将数字型字符串转换为数字,x是数字型字符串。说明:转换时自动

47、将空格、制表符、换行符去掉,当遇到第一个不能识别为数字的字符时即停止读入。,8.3.2 输入输出函数,1输出函数MsgBox 格式:msgbox(显示信息,按钮数目+图标类型,标题栏字符串)功能:在对话框中显示消息,等待用户单击按钮,返回一个整数,该值代表用户单击了哪个按钮。说明:P170,消息框的图标样式P171,2输入函数inputbox格式:inputbox(提示信息,标题栏字符串,默认值)功能:提示用户输入一个字符串或数值。说明:(1)“提示信息”是必选项,是一个字符串,显示在输入框中。(2)“标题栏字符串”是可选项,省略此项,标题栏将显示应用程序名。(3)默认值是可选项,是字串或数字

48、,省略此项,系统会自动匹配数据类型。(4)函数返回值是在输入框中输入的数字或字符串。,例8-10 输入输出函数,创建窗体;在窗体中建立一个文本框 标签为“输出函数返回值”名称为t1;建立一个命令按钮标题为输入输出函数练习名称为c1;C1的单击事件代码:Private Sub c1_Click()Dim aa As String aa=InputBox(请写出您的姓名:,输入框,)bb=MsgBox(aa&你好!,1+64,输出框)t=bb End Sub,8.3.3 计算外部数据源数据的函数,1Davg函数 格式:Davg(字段名,表名,条件表达式)功能:对指定字段求平均值。说明:若省略条件表

49、达式,对全体字段求平均值。例如:Davg(奖金,工资,基本工资=2000)2Dsum函数 格式:Dsum(字段名,表名,条件表达式)功能:对指定字段求和。说明:若省略条件表达式,对全体字段求和。例如:Dsum(“奖金”,“工资”),除了在报表中介绍过的Dlookup函数,还有以下函数:,3Dcount函数 格式:Dcount(字段名,表名,条件表达式)功能:对指定字段统计个数。说明:若省略条件表达式,对全体字段统计个数。例如:Dcount(“教师编号,教师,性别=女),例8-12:统计外部表数据,外部数据:,(1)在窗体建3个文本框名称为t1、t2、t3附加标签的标题分别为“人数总计”、“工资

50、合计”、“平均奖金”。(2)在窗体建立命令按钮标题为“计算”名称为c1。,(3)c1的click事件代码:t1=DCount(教师编号,工资)t2=DSum(基本工资,工资)t3=DAvg(奖金,工资)(4)转到窗体视图单击命令按钮各数据显示在文本框中。,8.3.4 处理空值的函数 Nz,Nz函数可以将Null值转换为数字0、空字串或自定义的返回值。格式:Nz(变量/表达式/字段属性名,指定值)说明:指定值是可选项。若给出指定值,Nz函数返回指定值。若省略指定值,当类型为数值型且值为Null,Nz函数返回数字0。当类型为字符型且值为Null,Nz函数返回空字串。,例8-13:如果文本框为空,显

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号