模块的设计与使用2_第1页
模块的设计与使用2_第2页
模块的设计与使用2_第3页
模块的设计与使用2_第4页
模块的设计与使用2_第5页
已阅读5页,还剩186页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块的设计与使用演示文稿目前一页\总数一百九十一页\编于十点

模块的基本概念VBA程序设计基础VBA函数的使用

模块的建立与使用

过程与参数传递本章要点:目前二页\总数一百九十一页\编于十点9.1模块概述模块是一个或多个过程组成的集合,用模块的名字存储在一起,其中的每个过程都能实现特定操作。

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

目前四页\总数一百九十一页\编于十点(3)事件过程:事件过程是专为特定事件编写的一组代码,被窗体或报表的特定事件调用,实现特定的操作,并对用户的操作做出响应。事件过程只能在类模块中定义。(4)通用过程:通用过程是与特定事件无关的一组代码,能被多个同类型或不同类型的事件调用。在类模块和标准模块中都可以定义通用过程。9.1.1模块的基本概念目前五页\总数一百九十一页\编于十点类模块的建立。例9.1:窗体中建立标签,单击标签显示问候信息。(1)新建名为win9-1的窗体。(2)窗体中建立标签→标签“标题”为:问候→标签“名称”为:hello→背景色:淡黄色→边框颜色:黑色。(3)右击标签控件→快捷菜单中选:事件生成器→在【选择生成器】对话框中选:代码生成器→【确定】。9.1.1模块的基本概念目前六页\总数一百九十一页\编于十点(4)在事件过程中输入代码:MsgBox“你好!”。9.1.1模块的基本概念(5)转到窗体视图,单击标签显示问候信息。目前七页\总数一百九十一页\编于十点标准模块的建立例9.2:建立标准模块,在标准模块中建立一个通用过程,运行过程显示问候信息。(1)单击“模块”对象→单击“新建”按钮。(2)输入:subhello()→回车,回车后系统自动建立过程的起始行subhello()与过程的结束行endsub。9.1.1模块的基本概念目前八页\总数一百九十一页\编于十点例9.2:建立标准模块,在标准模块中建立一个通用过程,运行过程显示问候信息。(1)单击“模块”对象→单击【新建】按钮。(2)输入:subhello()→回车,回车后系统自动建立过程的起始行subhello()与过程的结束行endsub。(3)在subhello()与endsub之间输入:MsgBox"你好!"。9.1.1模块的基本概念(4)单击【保存】按钮→为模块起名:模块1→单击【确定】。(5)【运行】菜单→【运行子过程】,数据库窗口显示问候信息。目前九页\总数一百九十一页\编于十点VBE(VisualBasicEditor)是Access的编程界面,也是MicrosoftOffice所有组件公用的程序编辑系统,编写和调试代码在VBE窗口进行。9.1.2编程界面方法1:在窗体或报表设计视图中选控件→单击标准工具栏的“生成器”按钮→在“选择生成器”对话框中选择“代码生成器”。方法2:右击窗体或报表设计视图中控件→快捷菜单中选“事件生成器”→“选择生成器”对话框中选择代码生成器”。

目前十页\总数一百九十一页\编于十点9.1.2编程界面工程窗口-选择对象属性窗口-选择对象的属性代码窗口选择事件目前十一页\总数一百九十一页\编于十点(1)代码窗口

代码窗口用来显示、编写以及修改VBA代码。对象框过程框9.1.2编程界面代码区声明区目前十二页\总数一百九十一页\编于十点(2)

“工程资源管理器”窗口也称工程窗口,一个数据库应用系统就是一个工程;系统中的所有类模块及标准模块对象都在该窗口中显示出来。9.1.2编程界面标准模块类模块目前十三页\总数一百九十一页\编于十点(3)属性窗口

属性窗口列出了选定对象的属性,可以在设计时查看、改变这些属性。9.1.2编程界面目前十四页\总数一百九十一页\编于十点(4)标准工具栏9.1.2编程界面(1)“Access视图”按钮

,单击按钮由VBE窗口切换到数据库窗口。(2)“插入模块”按钮

,单击下拉箭头选择要插入模块的类型,打开一个新模块窗口。(3)“运行子过程/用户窗体”按钮

,单击按钮运行标准模块的过程。目前十五页\总数一百九十一页\编于十点9.1.2编程界面(4)“中断”按钮

,单击按钮暂停正在运行的程序。(5)“重新设置”按钮

,单击按钮结束正在运行的程序(6)“设计模式”按钮

,单击按钮打开或退出模块的设计模式,是开关键。(7)“工程资源管理器”按钮

,单击按钮打开“工程资源管理器”窗口。(8)“属性窗口”按钮

,单击按钮打开“属性”窗口。目前十六页\总数一百九十一页\编于十点9.2数据类型、常量和变量VBA(VisualBasicforApplication)是MicrosoftOffice系列软件的内置编程语言,VBA的语法与独立运行的VisualBasic编程语言互相兼容,也是面向对象的程序设计语言,功能强大,具有可视化编程环境。程序是对数据进行处理的。目前十七页\总数一百九十一页\编于十点VBA在数据类型和定义方式上均继承了传统的Basic语言的特点。Access数据表中的字段使用的数据(OLE对象和备注字段数据类型除外)在VBA中都有对应的类型。在VBA中,数据类型用来决定变量可以保存何种数据。VBA支持多种数据类型,为用户编程提供了方便。9.2.1数据类型——标准数据类型

目前十八页\总数一百九十一页\编于十点9.2.1数据类型——标准数据类型

VBA类型符号字段类型取值范围字节数Byte字节0~255之间的整数1Integer%整型-32768~32767之间的整数2Long&长整型-2147483648~2147483647之间的整数4Single!单精度负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E384Double#双精度负数:-1.79769313486232E308∼-4.94065645841247E-324正数:4.94065645841247E-324∼1.79769313486232E3088Currency@货币-922337203685477.5808∼922337203685477.58078String$文本0∼65535个字符Boolean是/否true或false1Date日期/时间January1,100到December31,99998Variant无目前十九页\总数一百九十一页\编于十点9.2.1数据类型2.默认值变体类型Variant,是VBA的默认数据类型,凡是没有定义数据类型变量,都被默认为变体类型。变体型变量默认值为empty。Boolean型,也称为逻辑型,只有2个值:真(true)和假(false)。布尔型变量默认值为false。字符串类型String,用单引号或双引号括起来的一组字符,每个字符占1个字节。字符串型变量默认值为空串。与数字有关的数据类型,默认值为0。目前二十页\总数一百九十一页\编于十点3.数据类型转换函数函数转换后类型说明CByte(x)Bytex取值范围同Byte,小数部分四舍五入,超出范围显示“溢出”CInt(x)Integerx取值范围同Integer,小数部分四舍五入CLng(x)Longx取值范围同Long,小数部分四舍五入CSng(x)Singlex取值范围同SingleCDblDoublex取值范围同DoubleCCurCurrencyx取值范围同CurrencyCBool(x)Booleanx取值范围是任何有效数字或字串CDate(x)Datex取值范围是任何有效日期表达式CStr(x)String无CVar(x)Variantx如果是数值范围同Double,否则,与String相同9.2.1数据类型目前二十一页\总数一百九十一页\编于十点9.2.2常量常量是指在程序运行的过程中,其值不能被改变的量。在Access中,常量的类型有3种:直接常量、符号常量、系统常量(1)直接常量(字面常量)

如:10,20%(整型),123.0,345#(双精度),345.12@(货币型),#2010-9-10#

(日期型),“VBA程序设计”等目前二十二页\总数一百九十一页\编于十点(2)符号常量

在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。

VBA中使用关键字Const声明符号常量。其格式如下:

Const常量名常数表达式如:

ConstPI#=3.14159269.2.2常量目前二十三页\总数一百九十一页\编于十点说明:符号常量名一般用大写字母,以便与变量名区分。如果符号常量定义在模块声明区,所有模块的过程都能使用该变量,通常在前面加上Global或Public。如:PublicConstPI=3.14如果符号常量定义在事件的过程中,该符号常量只在本过程中可用。符号常量定义时不用指明数据类型。9.2.2常量目前二十四页\总数一百九十一页\编于十点(3)系统常量系统建立的常量,如:true、false、yes、no、on、off、null等。系统常量可以在程序设计中直接使用。

内部符号常量用前两个字母指明该常量的对象库;以ac开头的是Access的库常量;以vb开头的是VBA的库常量;以db开头的是DAO的库常量;以ad开头的是ADO的库常量。

9.2.2常量目前二十五页\总数一百九十一页\编于十点变量是指在程序运行过程中值会发生变化的数据。变量的三要素:变量名、变量类型、变量的值。1.变量命名规则由字母、数字、下划线组成,用英文字母开头。不能包含空格以及除下划线之外的标点符号。不能用VBA的关键字(如:dim)。字符个数不得多于255个。变量名不区分大小写。变量名必须惟一,同一个过程不能有2个变量有相同的名字。

9.2.3变量

目前二十六页\总数一百九十一页\编于十点2.变量的显式声明

显式声明变量的格式:dim变量名as类型说明:(1)如果省略“as类型”,默认变体类型,变体类型比其他类型占用更多内存资源。(2)一个dim关键字可以定义多个变量,变量之间用逗号分隔。例如:dima1asinteger,a2asboolean(3)用dim定义的变量是局部变量,系统按照数据类型自动设置默认值。9.2.3变量

目前二十七页\总数一百九十一页\编于十点3.变量的隐式声明

变量没有显式声明,而是通过一个值指定给变量名,称为变量的隐式声明。隐式声明变量类型,不加类型说明符,变量默认为变体类型。例如:b1%=125‘隐式声明变量b1是整型。

c1=125’变量c1是变体型,值是1259.2.3变量

目前二十八页\总数一百九十一页\编于十点例9.3程序中变量和符号常量的使用要求:建立窗口win9-3,在文本框中输入字符串,回车后显示为标签和窗体的标题。(1)新建窗体win9-3。(2)窗体中建立文本框→“名称”为t1。(3)窗体中建立标签→“名称”为b1→“标题”为b1。(4)进入VBE界面→在“通用-声明”中输入代码:ConstPP="你好!"→回车。

9.2.3变量

目前二十九页\总数一百九十一页\编于十点(5)选t1→事件选:AfterUpdate→输入代码如下:

Rem文本框t1的更新后事件过程b1.Caption=PP+t1Me.Caption=PP+t1

9.2.3变量

(6)转到窗体视图→在文本框中输入:张国华→回车,标签和窗体的标题均显示字符串“你好!张国华”。

目前三十页\总数一百九十一页\编于十点VBA中的运算符可分为4种类型:算术运算符、字符串运算符、关系运算符和逻辑运算符。(1)算术运算符算术运算符是常用的运算符,用来执行简单的算术运算,VBA提供了8个算术运算符。乘幂(^)、负数(-)乘法(*)、除法(/)、整数除法(\)、求模(mod)、加法(+)、减法(-)。9.2.4运算符与表达式目前三十一页\总数一百九十一页\编于十点(1)算术运算符9.2.4运算符与表达式目前三十二页\总数一百九十一页\编于十点(2)关系运算符将两个操作数进行大小比较,结果为逻辑值,即真(True)或假(False)。相等=、不相等<>、大于>、大于等于>=、小于<、小于等于<=。注意:

字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。9.2.4运算符与表达式目前三十三页\总数一百九十一页\编于十点(2)关系运算符9.2.4运算符与表达式目前三十四页\总数一百九十一页\编于十点将操作数进行逻辑运算,结果是逻辑值。与and、或or、非not。(3)逻辑运算符9.2.4运算符与表达式目前三十五页\总数一百九十一页\编于十点(4)连接运算符

字符串运算就是将两个字符串连接起来生成一个新的字符串。 字符串运算符包括:

&运算符

+运算符9.2.4运算符与表达式目前三十六页\总数一百九十一页\编于十点●

&运算符:

将两个不同类型的数据(表达式的值)作字符串连接。例如:1&“+”&2&“等于”&1+2‘结果为:“1+2等于3”注意:由于符号“&”还是长整型的类型定义符,在字符串变量后使用运算符“&”时,变量与运算符“&”之间应加一个空格。运算符“&”两边的操作数可以是字符型,也可以是数值型。例如:12&56‘结果为“1256”9.2.4运算符与表达式目前三十七页\总数一百九十一页\编于十点●+运算符:

用来连接两个字符串表达式,形成一个新的字符串。注意:“+”运算符要求两边的操作数都是字符串。

【例】“+”运算符应用示例。 “4321”+1234‘结果为数值:5555 “4321”+“1234” ‘结果为"43211234" "abcd"+1234'出错

4321+“1234”&100 ‘结果为"5555100"9.2.4运算符与表达式目前三十八页\总数一百九十一页\编于十点5.对象运算符

对象运算符有“!”和“.”两种。(1)“!”运算符:作用是指定随后为用户引用的内容。使用“!”运算符可以引用一个开启的窗体、报表或开启窗体或报表中的控件。例如:引用打开的“学生信息”窗体。

forms![学生信息]

引用“学生成绩”窗体中的名称为t1的控件。

forms![学生成绩]!t1

9.2.4运算符与表达式目前三十九页\总数一百九十一页\编于十点5.对象运算符

(2)“.”运算符:通常为对象指定相应的值或内容。使用“.”运算符可以引用窗体、报表或控件等对象的属性。例如:将“学生信息”窗体中名称为Lab的标签的文字的颜色设置为红色。

forms![学生信息]!Lab.forecolor=255

9.2.4运算符与表达式目前四十页\总数一百九十一页\编于十点6.运算优先级(1)算术运算符的优先级:幂>取负>乘和除>整数除法>求模>加和减。(2)关系运算符的优先级相同,同级运算按从左到右方向进行。(3)逻辑运算符的优先级:not>and>or。(4)连接运算符的优先级相同。算术运算符>连接运算符>关系运算符>逻辑运算9.2.4运算符与表达式目前四十一页\总数一百九十一页\编于十点函数实际上是系统事先定义好的内部程序,用来完成特定的功能。VBA提供了大量的内部函数,供用户在编程时使用。函数的调用形式为:函数名(参数表)其中,参数可以是常量、变量或表达式,可以有一个或多个,参数之间用逗号分隔。每个函数被调用时,都会有一个返回值。根据函数的不同,参数与返回值都有特定的数据类型与之对应。9.3内置函数

目前四十二页\总数一百九十一页\编于十点1.常用算术函数

算术函数主要包括:求绝对值、取整、产生随机数等。

9.3.1算术函数

函数功能说明abs(x)返回x的绝对值x是任意实数int(x)返回x的整数部分返回值小于等于xfix(x)返回x的整数部分x<0时,返回值大于等于xsqr(x)返回x的平方根要求x大于等于0rnd(x)返回0~1之间的随机数为单精度类型,不包含0和1round(x,n)返回有n位小数的xn是小数位数,n位以后的数四舍五入目前四十三页\总数一百九十一页\编于十点2.随机函数关于随机函数说明如下:(1)若x>0,每次产生不同的随机数。x>0时可直接写Rnd,省略括号和参数。(2)若x=0,产生与最近随机数相同的数。(3)若x<0,先产生一个不同的随机数,以后每次产生与前一个相同的数。

9.3.1算术函数

目前四十四页\总数一百九十一页\编于十点3.函数验证用立即窗口验证下列表达式:?int(100*Rnd)’产生0~99之间的随机整数。?int(101*Rnd)’产生0~100之间的随机整数。?int(100*Rnd+1)’产生1~100之间的随机整数。?int(101*Rnd+100)’产生100~200之间的随机整数。

9.3.1算术函数

目前四十五页\总数一百九十一页\编于十点9.3.2字符串函数

字符串函数主要包括:求字符串长度、求子字符串、测定子字符串位置等。

1.常用字符串函数

函数功能说明len(x)返回x的长度x为字符串或变量space(x)返回x个空格组成的字符串x为数字ucase(x)将x中的小写字母转大写x为字符串lcase(x)将x中的大写字母转小写x为字符串trim(x)去掉x的首部和尾部空格x为字符串目前四十六页\总数一百九十一页\编于十点9.3.2字符串函数

1.常用字符串函数

函数功能说明ltrim(x)去掉x的首部空格x为字符串rtrim(x)去掉x的尾部空格x为字符串left(x,n)从x左边开始取n个字符,得到子字符串x为字符串right(x,n)从x右边开始取n个字符,得到子字符串x为字符串mid(x,m,n)从x第m个字符开始取n个字符x为字符串instr(x,y)返回y在x中的位置x和y均为字符串目前四十七页\总数一百九十一页\编于十点9.3.2字符串函数

2.instr()函数格式:instr(起始位置,字串1,字串2,比较方式)功能:返回字串2在字串1中最早出现的位置。说明:(1)返回值是一个整数。如果返回值为0,说明字符串2不在字符串1中。(2)起始位置是可选项,默认从第一个字符开始检索。(3)比较方式是可选项,0:按区分大小写比较;1:按不区分大小写比较;1:是默认值。目前四十八页\总数一百九十一页\编于十点9.3.2字符串函数

3.函数验证?ucase("abcdABCD")返回“ABCDABCD”。?lcase("abcdABCD")返回“abcdabcd”。?trim("ABCD")返回“ABCD”,只处理两端空格,中间空格不做处理。?len("2010年计算机等级考试")返回12,一个汉字当作一个字符。x=123回车后把123赋给变量x。?Len(x)返回3,len函数可以返回数字变量所含的数字个数。?instr(1,"abcABC","A",0)返回4,按区分大小写比较。?instr(1,"abcABC","A",1)返回1,按不区分大小写比较。?instr(“abcABC”,"A")返回1,使用默认值。目前四十九页\总数一百九十一页\编于十点1.常用日期时间函数9.3.3日期时间函数

函数功能说明weekday(x,n)返回1~7的整数,表示星期几x为日期值hour(x)返回x的小时数x为时间值minute(x)返回x的分钟数x为时间值second(x)返回x的秒数x为时间值date()返回计算机系统日期函数无参数now()返回计算机系统日期和时间函数无参数year(x)返回x的年份x为日期值month(x)返回x的月份x为日期值day(x)返回x的日期号码x为日期值目前五十页\总数一百九十一页\编于十点2.weekday()函数格式:weekday(x,n)功能:返回1~7的整数,表示星期几。说明:(1)x是日期数据,n为可选项,默认1。(2)若n为1,星期天返回1,星期一返回2,…,依次类推。若n为2,星期一返回1,星期二返回2,…,依次类推。3.函数验证?weekday(date,2)如果当前是星期二,返回数字2。

9.3.3日期时间函数

目前五十一页\总数一百九十一页\编于十点1.常用转换函数9.3.4转换函数函数功能说明asc(x)返回x首字符的ASCII码x是字符串或字符串变量名chr(x)返回数字x对应的字符x为数字,ASCII码str(x)将x转成字符串x为数字序列val(x)将x转换为数字x是数字字符组成的字符串目前五十二页\总数一百九十一页\编于十点2.函数验证?asc("ABC")‘返回65,大写字母A的ASCII码是65。?asc("a")‘返回97,小写字母a的ASCII码是97。?asc(“0”)‘返回48,字符0的ASCII码是48。?chr(66)‘返回大写字母B。?chr(50)‘返回数字字符2。?str(12)+str(34)‘返回字符串“1234”,12和34前均有一个空格,字符串长度6。?val("12")+val("34")‘返回数值46。?val("12")‘返回数值12。?val("12ab34")‘返回数值12。9.3.4转换函数目前五十三页\总数一百九十一页\编于十点9.3.5输入函数与输出函数1.输入函数inputbox格式:inputbox("提示信息","标题",默认值)功能:提示用户输入一个字符串或数值。说明:(1)“提示信息”是一个字符串,显示在对话框窗口中,必选项。(2)“标题”是一个字符串,显示在对话框窗口标题栏中,可选项,省略此项,标题栏将显示应用程序名。(3)默认值可以是字串或数字,可选项,指定的默认值显示在对话框的输入框中。(4)函数返回值是在输入框中输入的数字或字符串,返回值的类型为string。目前五十四页\总数一百九十一页\编于十点9.3.5输入函数与输出函数2.输出函数MsgBox格式:msgbox("信息",按钮+图标,"标题")功能:显示一个消息框。说明:(1)“信息”是一个字符串,显示在消息框中,必选项,最大长度为1024个字符,可以用Chr(13)(回车)或Chr(10)(换行)将消息框中字符串分行显示。(2)格式中的“按钮”是一个数字或VB符号常量,用来定义消息框中按钮个数和按钮作用,可选项,默认值为0。目前五十五页\总数一百九十一页\编于十点9.3.5输入函数与输出函数(3)格式中的“图标”是一个数字或VB符号常量,配合消息显示在消息框中,起警示作用,可选项。按钮取值符号常量按钮个数和作用0VbOKOnly只显示确定按钮,是默认值。1VbOKCancel显示确定、取消按钮。2VbAbortRetryIgnore显示终止、重试、忽略按钮。3VbYesNoCancel显示是、否、取消按钮。4VbYesNo显示是、否按钮。5VbRetryCancel显示重试、取消按钮。图标取值符号常量图标样式说明16VbCritical显示临界信息图标。圆圈中间有叉号32VbQuestion显示查询图标。圆圈中间有问号48VbExclamation显示警告图标。三角形中间有叹号64VbInformation显示消息图标。标注圆圈中间有倒立的叹号目前五十六页\总数一百九十一页\编于十点9.3.5输入函数与输出函数说明:“按钮+图标”项可以在输入代码时从提示框中选取系统提供的vb符号常量。例如:MsgBox"要退出吗?",vbYesNo+vbQuestion,"确认",代码使用vb符号常量定义消息框的按钮和图标,显示结果(4)“标题”是一个字符串,可选项,省略此项,标题栏显示应用程序名。(5)函数返回值是整数或vb符号常量,反映了用户在消息框中单击的按钮

.返回值符号常量单击的按钮1VbOK“确定”按钮2VbCancel“取消”按钮3VbAbort“终止”按钮4VbRetry“重试”按钮5VbIgnore“忽略”按钮6VbYes“是”按钮7VbNo“否”按钮目前五十七页\总数一百九十一页\编于十点9.3.5输入函数与输出函数输入输出函数的使用

例9-4:用输入函数输入数据,用输出函数显示相加的结果。(1)新建窗体win9-4。(2)窗体中建立2个命令按钮→“标题”分别为:c1、c2→“名称”分别为:c1、c2。(3)按钮c1的click事件代码如下:

a=InputBox("请输入

a=")'a是变体类型

b=InputBox("请输入

b=")'b是变体类型

c=MsgBox(“表达式a+b="&a+b,1+64,"输出框")

目前五十八页\总数一百九十一页\编于十点9.3.5输入函数与输出函数(4)按钮c2的click事件代码如下:

Dimaasinteger,basintegera=InputBox("请输入

a=")'a是整型

b=InputBox("请输入

b=")'b是整型

c=MsgBox(“表达式a+b="&a+b,1+64,"输出框")(5)转到窗体视图→单击命令按钮c1→第1个输入框中输入6→【确定】→第2个输入框中输入3→【确定】。(6)显示第1个消息框,信息为:a+b=63,这是字符相连

目前五十九页\总数一百九十一页\编于十点9.3.5输入函数与输出函数(7)单击【取消】按钮→显示第2个消息框,信息是前一个消息框单击按钮的返回值,因为单击了【取消】按钮,返回值是2。(8)单击命令按钮c2→第1个输入框中输入6→【确定】→第2个输入框中输入3→【确定】→显示消息框,信息为:a+b=9,这是数字相加。

目前六十页\总数一百九十一页\编于十点9.3.6聚合函数

聚合函数包括:Dcount、Davg、Dsum、Dmax、Dmin、Dlookup,用来显示非数据源的信息,聚合函数也可以在代码中使用。例9-5:建立有2个文本框的窗体,第1个文本框输入数据,第2个文本框显示用DLookup函数检索的相应值。(1)新建窗体win9-5。(2)用数据表视图打开“课程”表。(3)建立2个文本框→“名称”分别为:t1、t2→附加标签的“标题”分别为:输出课程名(101-105)、课程名。

目前六十一页\总数一百九十一页\编于十点9.3.6聚合函数

(4)建立命令按钮→“标题”为:确定→“名称”为:c1。(5)命令按钮c1的click事件代码如下:t2=DLookup("课程名","课程","课程编号=t1")(6)转到窗体视图→在文本框t1中输入103→单击【确定】→课程名显示在文本框t2中。

目前六十二页\总数一百九十一页\编于十点9.3.7Nz函数Nz函数可以将Null值转换为数字0、空字串或自定义的返回值,用来测试可能包含Null值的表达式。格式:Nz(变量/表达式/字段属性名[,指定值])说明:(1)若被Nz函数测试的数据不为空,函数原样返回数据值。(2)若被Nz函数测试的数据为空,数字型数据返回0,字符串型数据返回空串。(3)若设置了指定值,并且被测试的数据为空,函数返回指定值,是可选项。

目前六十三页\总数一百九十一页\编于十点例9-6:建立有1个文本框的窗体,用Nz函数测试文本框的值。(1)新建窗体win9-6。(2)窗体中建立文本框→“名称”为:t1→附加标签的“标题”为:输入姓名。(3)窗体中建立命令按钮→“标题”为:确定→“名称”为:c1。(4)按钮c1的click事件代码如下:DimaaAsStringaa=Nz(t1.Value,"姓名不能为空!")MsgBoxaa&"你好!"

9.3.7Nz函数目前六十四页\总数一百九十一页\编于十点(5)转到窗体视图,文本框空着,单击命令按钮,结果:9.3.7Nz函数(6)在文本框输入字串“张国华”,单击命令按钮,显示结果:

目前六十五页\总数一百九十一页\编于十点9.4面向对象程序设计基本概念9.4.1基本概念(1)对象在自然界中,一个对象就是一个实体,如一辆汽车就是一个对象。在面向对象的程序设计中,对象代表应用程序中的元素,如表、窗体、按钮等。(2)类类是某种类型对象的原型。Access数据库窗口左边的7个类对象:表、查询、窗体、报表、页、宏、模块,应该准确的称为7个对象类。目前六十六页\总数一百九十一页\编于十点9.4.1基本概念(3)属性属性是对象的特征。如汽车有颜色和型号属性,按钮有标题和名称属性。在面向对象的程序设计,如果在“属性”窗口给对象定义属性,称为属性的静态设置。如果用代码给对象设置属性,称为属性的动态设置。用代码给对象设置属性的格式:对象名.属性名=属性值用代码引用对象属性的格式:对象名.属性名例如:c1.forecolor=vbRed将命令按钮c1的前景色设置为红色。Msgboxme.caption显示当前窗体的标题。目前六十七页\总数一百九十一页\编于十点(4)事件事件是对象能够识别的动作。如按钮可以识别单击事件、双击事件等。在类模块每一个过程的开始行,都显示对象名和事件名。如:PrivateSubc1_Click()。(5)方法方法是对象能够执行的动作,决定了对象能完成什么事。不同对象有不同的方法。如close方法能关闭一个窗体。9.4.1基本概念目前六十八页\总数一百九十一页\编于十点1.键盘事件过程键盘事件是指当用户在窗体或控件获得焦点的情况下,按下键盘时(或者使用SendKeys操作或语句发送击键信息)所发生的事件。2.鼠标事件过程鼠标事件是指当用户在窗体或控件获得焦点的情况下,操作鼠标时所引发的事件。鼠标事件包含6个,最常用的是单击事件(Click)和双击事件(DblClick)。9.4.2常用事件过程目前六十九页\总数一百九十一页\编于十点3.窗体事件过程窗体事件使用户打开或关闭一个窗体时所触发的事件。Open:在窗体已经打开,但第一条记录尚未显示时,触发Open事件。Load:窗体打开且显示器中的记录时触发Load事件。Open事件与Load事件之间的显著差别是:Open事件能被取消,而Load事件不能被取消。例如,如果在一个事件过程中窗体的Open事件动态地创建窗体的记录源,尚无记录可显示,则可取消窗体的打开操作。Close:当窗体被关闭并从屏幕消失时,触发Close事件。Unload事件能够被取消,但Close事件却不能。9.4.2常用事件过程目前七十页\总数一百九十一页\编于十点9.4.3用代码设置窗体属性和事件1.关键字MeMe是VBA编程中使用频率很高的关键字,Me是“包含这段代码的对象”的简称,可以代表当前对象。在类模块中,Me代表当前窗体或当前报表。例如:Me.Lab.Caption=“生信息一览表”------定义窗体中标签Lab的caption属性。目前七十一页\总数一百九十一页\编于十点9.4.3用代码设置窗体属性和事件2.用代码设置窗体属性

主要包括:窗体标题、窗体数据源、背景图片等属性。例9-7:窗体中建立文本框t1和命令按钮c1,单击命令按钮完成以下3件事:(1)使窗体标题显示当前日期。(2)在窗体中插入背景图片。(3)设置窗体的数据源为“学生信息”表,将第一条记录的姓名显示在t1中。目前七十二页\总数一百九十一页\编于十点9.4.3用代码设置窗体属性和事件(1)新建窗体win7。(2)窗体中建立文本框t1→命令按钮c1→命令按钮标题为:设置。(3)右击命令按钮c1→【事件生成器】→【代码生成器】→【确定】。(4)c1的click事件过程代码如下:PrivateSubc1_Click()Me.Caption=Date()Me.Picture=CurrentProject.Path+"\a1.bmp"Me.RecordSource="学生信息"t1=[姓名]Endsub(5)转到窗体视图→单击命令按钮,显示结果。目前七十三页\总数一百九十一页\编于十点9.4.3用代码设置窗体属性和事件3.用代码设置窗体事件常用窗体事件:(1)打开窗体会依次发生的事件:open(打开)→load(加载)。(2)关闭窗体会依次发生的事件:unload(卸载)→close(关闭)。目前七十四页\总数一百九十一页\编于十点9.4.3用代码设置窗体属性和事件例9-8:给窗体4个事件写代码,观查窗体事件的发生顺序。(1)新建窗体“事件顺序”。(2)打开【属性】窗口→对象框选【窗体】→单击【事件】卡。(3)事件选:打开→过程代码:MsgBox"这是open事件!"。(4)事件选:加载→过程代码:MsgBox"这是load事件!"。(5)事件选:卸载→过程代码:MsgBox"这是unload事件!"。(6)事件选:关闭→过程代码:MsgBox"这是close事件!"。(7)转到窗体视图,打开窗体时先发生open事件,再发生load事件。关闭窗体时先发生unload事件,再发生close事件。目前七十五页\总数一百九十一页\编于十点Docmd是Access的一个特殊对象,用来调用内置方法,在程序中实现对Access的操作,诸如打开窗口、关闭窗体、打开报表、关闭报表等。DoCmd对象的大多数方法都有参数,有些参数是必需的,有些则是可选的。若省略可选参数,参数将采用默认值。9.4.4Docmd对象

(1)用DoCmd对象打开窗体格式:DoCmd.OpenForm"窗体名"

功能:用默认形式打开指定窗体。例如:DoCmd.OpenForm"文本框练习"目前七十六页\总数一百九十一页\编于十点(2)用DoCmd对象关闭窗体格式1:DoCmd.CloseacForm,"窗体名"

功能:关闭指定窗体。例如:DoCmd.CloseacForm,"文本框练习"

格式2:DoCmd.Close

功能:关闭当前窗体。(3)用DoCmd对象打开报表格式:DoCmd.OpenReport"报表名",acViewPreview

功能:用预览形式打开指定报表。例如:DoCmd.OpenReport"工资报表",acViewPreview9.4.4Docmd对象

目前七十七页\总数一百九十一页\编于十点(4)用DoCmd对象关闭报表格式1:DoCmd.CloseacReport,"报表名"

功能:关闭指定报表。例如:DoCmd.CloseacReport,"工资报表"

格式2:DoCmd.Close

功能:关闭当前报表。9.4.4Docmd对象

目前七十八页\总数一百九十一页\编于十点(5)用DoCmd对象运行宏格式:DoCmd.RunMacro"宏名"

功能:运行指定宏。例如:DoCmd.RunMacro"宏1"(6)用DoCmd对象退出Access。格式:DoCmd.Quit

功能:关闭所有Access对象和Access本身。9.4.4Docmd对象

目前七十九页\总数一百九十一页\编于十点例9-9:新建窗体,窗体中建立6个命令按钮,单击按钮打开和关闭指定窗体、打开和关闭指定报表、退出窗体、退出Access。

(1)新建窗体win9-9。(2)在窗体中建立6个命令按钮→“名称”分别为:c1~c6→“标题”分别为:打开窗体win9-1、关闭窗体win9-1、打开排序报表、关闭排序报表、退出当前窗体、退出Access。9.4.4Docmd对象

目前八十页\总数一百九十一页\编于十点(3)按钮c1的click事件代码如下:DoCmd.OpenForm"win9-1"(4)按钮c2的click事件代码如下:DoCmd.CloseacForm,"win9-1"(5)按钮c3的click事件代码如下:DoCmd.OpenReport"排序",acViewPreview(6)按钮c4的click事件代码如下:DoCmd.CloseacReport,"排序"(7)按钮c5的click事件代码如下:DoCmd.Close(8)按钮c6的click事件代码如下:DoCmd.Quit

9.4.4Docmd对象

目前八十一页\总数一百九十一页\编于十点9.5程序结构及程序控制语句9.5.1VBA程序结构1.语句和程序语句:是一条能完成某项操作的命令,语句中可以包含关键字、运算符、变量、常量和表达式。语句按功能分为2类:声明语句和执行语句。(1)声明语句用来定义变量、符号常量等。(2)执行语句用来给变量赋值、实现各种流程控制、调用过程等。目前八十二页\总数一百九十一页\编于十点9.5.1VBA程序结构程序:是语句的集合,告诉计算机要完成的任务,程序的执行顺序由程序结构决定,程序有3种结构:顺序、选择、循环。(1)顺序结构,按语句排列顺序依次执行语句代码。(2)选择结构,又称为条件结构,根据条件成立与否选择执行不同的语句代码。(3)循环结构,重复执行某段程序代码。目前八十三页\总数一百九十一页\编于十点2.声明语句声明语句用来定义符号常量、变量、数组和过程等的语句。定义的同时也包括了初始化值、生命周期、作用域的设置等内容。例如:dimaasinteger9.5.1VBA程序结构目前八十四页\总数一百九十一页\编于十点3.赋值语句赋值语句是程序设计中最常用的执行语句,用来给变量指定一个值。格式:变量名=表达式功能:将表达式的值赋给变量。例如:a=12,b=a+869.5.1VBA程序结构目前八十五页\总数一百九十一页\编于十点3.赋值语句说明:(1)赋值号“=”与数学的等号意义不同。例如,语句a=a+1的功能是将变量a的当前值加1后赋给变量a。(2)赋值号左边只能是变量名,不能是常量和表达式。(3)赋值语句有计算功能,对表达式先计算后赋值。(4)赋值号两边的数据类型要匹配。例如,表达式a%="abc"返回错误提示,因为该操作把字符串赋给整型变量。9.5.1VBA程序结构目前八十六页\总数一百九十一页\编于十点4.注释语句

注释语句是非执行语句,用来提高程序的可读性,不被解释和编译。注释语句显示为绿色。格式1:rem注释内容说明:用rem引导的注释语句,如果放在其他语句后面,之间用冒号分隔。格式2:'注释内容说明:用单引号引导的注释语句,放在其他语句后面时无需使用冒号分隔。9.5.1VBA程序结构目前八十七页\总数一百九十一页\编于十点例如:

dima1asinteger,a2asinteger:rem定义两个整型变量

a1=12'给两个变量赋值

a2=34a1=a1+a2'将两个变量的和赋给变量a1rem用消息框显示结果

msgbox"a1+a2="&a1,vbInformation,"消息框"9.5.1VBA程序结构目前八十八页\总数一百九十一页\编于十点5.语句书写规则(1)一条语句一行写不下时,用续行符“_”作为第一行结尾,将剩余语句写在下一行。(2)语句较短时可以几条语句写在一行,语句之间用冒号分隔。(3)如果一行语句输入完成后显示为红色,表示该语句存在错误。(4)尽量使用提示信息。(5)代码不区分大小写。9.5.1VBA程序结构目前八十九页\总数一百九十一页\编于十点6.程序的缩进格式

用缩进格式书写的程序能清楚的显示程序结构,不仅帮助阅读程序,而且有利于程序维护。例如:

Rem下面的代码定义文本框t1的前景色和背景色PrivateSubc1_Click()‘c1是命令按钮t1.BackColor=vbYellow‘定义t1的背景色为黄色t1.ForeColor=vbRed‘定义t1的前景色为红色Endsub9.5.1VBA程序结构目前九十页\总数一百九十一页\编于十点7.使用提示与帮助在“代码”窗口输入代码时,凡是系统对象和数据库中定义的对象,在输入了对象名称和点运算符以后,系统会自动显示信息列表。9.5.1VBA程序结构将光标置于某个语句命令上,按F1键,或单击标准工具栏的【帮助】按钮,系统会显示关于与该语句命令的帮助信息。目前九十一页\总数一百九十一页\编于十点可以用立即窗口显示或计算变量值、函数值和表达式的值。?与print语句相同,在立即窗口显示计算结果。例9-10:在立即窗口计算表达式的结果。(1)单击【模块】对象→【新建】,进入VBE界面。(2)【视图】菜单→【立即窗口】,显示立即窗口。(3)输入表达式:?cint(true)→回车,显示结果:-1。(4)输入表达式:printfalse>true→回车,显示结果:true(5)输入表达式:?cbool(5)+cbool(true)→回车,显示结果:-2。

8.使用立即窗口

目前九十二页\总数一百九十一页\编于十点9.5.2顺序结构程序设计顺序结构就是按语句出现的先后依次执行。顺序结构的语句主要是赋值语句和输入/输出语句等。【例9-11】顺序结构程序要求:建立窗体,输入基本工资和本月的营业额,计算实发工资。实发工资等于基本工资+本月营业额的提成费,提成费等于本月营业额的5%。操作步骤:(1)打开“学生管理系统.mdb”→新建窗体win9-11→设置“记录选择器”、“导航按钮”、“分隔线”均不显示。目前九十三页\总数一百九十一页\编于十点9.5.2顺序结构程序设计(2)建立1个标签→“名称”为:b1→“标题”:为:计算月实发工资。

(3)建立1个命令按钮→“标题“为:本月实发工资→“名称”为:c1。(4)按钮c1的click事件代码如下:Dimjbgz,sfgz,yygasSingleJbgz=val(inputbox(“请输入基本工资”,“计算实发工资”,300))Yyg=val(inputbox(“请输入本月营业额”,“本月营业额”))Sfgz=jbgz+yyg*5%Msgbox(“实发工资为:”,sfgz)(6)转到窗体视图→输入信息框分别输入:1000、20000→单击命令按钮,结果显示如图所示。目前九十四页\总数一百九十一页\编于十点9.5.3选择结构程序设计

能实现选择结构的语句包括:if-then语句、if-then-else语句、if-then-elseif语句、selectcase语句。1.if-then语句

格式1:if条件then语句序列格式2:if条件then语句序列endif功能:若条件成立,执行语句序列,否则,什么也不做。说明:(1)如果语句写在一行,可省略endif语句。(2)如果语句不同行,则endif语句不可省略。目前九十五页\总数一百九十一页\编于十点例如:rem输出两个数据中的最大数dimaasinteger,basintegera=12:b=8ifa<bthena=bmsgbox"最大值为:"&a,vbInformation,"消息框"或者:dimaasinteger,basintegera=12b=8ifa<bthena=bendifmsgbox"最大值为:"&a,vbInformation,"消息框"1.if-then语句目前九十六页\总数一百九十一页\编于十点例9-12:建立窗体,在3个文本框输入数值,数值从小到大排序,显示在3个标签中。(1)新建窗体win17。(2)建立3个文本框→水平排列→“名称”分别为:t1~t3→删除附加标签→文本框上方建立标签→标签“标题”为:输入3个数字。(3)建立3个标签→水平排列→“名称”分别为:b1~b3→“标题:分别为:b1~b3。(4)建立命令按钮→“标题“为:从小到大排序→”名称“为:c1。

1.if-then语句目前九十七页\总数一百九十一页\编于十点(5)按钮c1的click事件代码如下:DimaAsInteger,bAsInteger,cAsInteger,tAsIntegera=t1:b=t2:c=t3Ifa>bThent=a:a=b:b=tIfa>cThent=a:a=c:c=tIfb>cThent=b:b=c:c=tb1.Caption=ab2.Caption=bb3.Caption=c(6)转到窗体视图→文本框分别输入:7、9、3→单击命令按钮→标签显示:3、7、9,结果:

1.if-then语句目前九十八页\总数一百九十一页\编于十点格式:if条件then

语句序列1else

语句序列2endif功能:若条件成立,执行语句序列1,否则,执行语句序列2。2.if-then-else语句

目前九十九页\总数一百九十一页\编于十点【例9-13】在文本框中输入包裹重量,用标签显示计算出来的包裹运输费。收费方法:重量小于等于30公斤的,每公斤收费0.5元,超过30公斤时,超出部分每公斤0.8元。操作步骤:(1)打开“学生管理系统.mdb”→新建窗体win9-13→设置“记录选择器”、“导航按钮”、“分隔线”均不显示。(2)建立3个标签→“标题”分别是:计算包裹运输费、运费、00→“名称”为:b1、b2和b3。(3)建立文本框→附加标签为:包裹重量→“名称”为:t1。(4)建立1个命令按钮→“标题”分别为:计算→“名称”分别为:c1。2.if-then-else语句

目前一百页\总数一百九十一页\编于十点(5)“计算”命令按钮c1的click事件代码如下:PrivateSubC1_Click()DimwAsSingle ‘w表示包裹重量DimpAsSingle ‘p表示运输费w=T1.ValueIfw>30Thenp=(w-30)*0.8+30*0.5‘大于30公斤时的运输费Elsep=w*0.5 ‘小于等于30公斤的运输费EndIfb2.Caption=p ‘在b2标签中显示计算出的运费EndSub目前一百零一页\总数一百九十一页\编于十点if语句的嵌套嵌套通常有2种:(1)嵌套结构1:if条件1then

语句序列1elseif条件2then'必须另起一行语句序列2else

语句序列3endif'if要与endif成对出现endif目前一百零二页\总数一百九十一页\编于十点if语句的嵌套(2)嵌套结构2:if条件1thenif条件2then'必须另起一行

语句序列1else

语句序列2endif'if要与endif成对出现else

语句序列3endif目前一百零三页\总数一百九十一页\编于十点3.if-then-elseif语句(多分支结构)使用格式:if条件1then

语句序列1elseif条件2then'else与if之间没有空格

语句序列2

……else

语句序列3endif目前一百零四页\总数一百九十一页\编于十点3.if-then-elseif语句(多分支结构)例9-15:在文本框输入分数,根据分数显示相应等级。(1)新建窗体win9-15。(2)建立文本框→“名称”为:t1→附加标签的“标题”为:请输入成绩。(3)建立标签→“标题”和“名称”都是:b1。(4)建立命令按钮→“标题”为:确定→“名称”为:c1。

目前一百零五页\总数一百九十一页\编于十点3.if语句的嵌套(5)命令按钮c1的click事件代码如下:DimaAsInteger,bAsStringa=t1Ifa>=90Thenb="优秀"ElseIfa>=80Thenb="良好"ElseIfa>=70Thenb="中等"ElseIfa>=60Thenb="及格"Elseb="不及格"EndIfb1.Caption=b

目前一百零六页\总数一百九十一页\编于十点4.selectcase语句

electcase语句又称为多分支选择语句。

格式:selectcase表达式

case值1语句序列1case值2语句序列2……case值n语句序列ncaseelse语句序列n+1endselect目前一百零七页\总数一百九十一页\编于十点2.功能:首先计算表达式的值,然后将表达式值与每个case的值比较,如果找到匹配的值,执行该case后的语句块,如果没有相匹配的值,执行caseelse后面的语句。3.说明(1)多个分支中只能选择执行一个,执行了第一个符合条件的分支以后,即使有其他分支符合条件也不再执行。(2)selectcase后面的表达式通常是一个变量的名字。(3)selectcase与endselect要成对出现,endselect之间有空格。(4)case后面的值有4种写法:

1.单一数值

2.一行并列数值,之间用逗号分隔。

3.数值1to数值2,前一个值必须比后一个值小。

4.用is开头的简单条件式,如is>10。不允许复杂条件式。9.5.4selectcase语句

目前一百零八页\总数一百九十一页\编于十点例9-16:建立文本框用来输入字符串,建立命令按钮用来检验字符串类型,结果显示在消息框中。

(1)新建窗体win20。(2)建立文本框→“名称”为:t1→附加标签的“标题”为:请输入字符。(3)建立命令按钮→“名称”为:c1→“标题”为:检测。(4)按钮c1的click事件代码:

9.5.4selectcase语句

目前一百零九页\总数一百九十一页\编于十点DimaAsString,bAsStringa=t1SelectCaseaCase"a"To"z"b="英文字母"Case"0"To"9"b="数字"Case"!","?",":",".",",",";"b="标点符号"CaseElseb="特殊字符"EndSelectMsgBoxb(5)转到窗体视图→文本框中输入%→单击“检测”按钮

9.5.4selectcase语句

目前一百一十页\总数一百九十一页\编于十点5.选择函数

1.iif函数格式:iif(条件,表达式1,表达式2)功能:如果条件为真,函数值为表达式1的值,否则,函数值为表达式2的值。例:y=iif(a>b,"a大","b大")目前一百一十一页\总数一百九十一页\编于十点5.选择函数

2.switch函数格式:switch(条件1,表达式1,条件2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论