ACCESS实例教程(第8章vba).ppt_第1页
ACCESS实例教程(第8章vba).ppt_第2页
ACCESS实例教程(第8章vba).ppt_第3页
ACCESS实例教程(第8章vba).ppt_第4页
ACCESS实例教程(第8章vba).ppt_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

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

文档简介

ACCESSACCESS实例教程实例教程 模块的操作(第模块的操作(第8 8章)章) ACCESS实例教程 1 1 . . 模块的基本概念模块的基本概念 2 2 . . VBAVBA程序设计基础程序设计基础 3 3 . . VBAVBA函数的使用函数的使用 4 4 . . 模块的建立与使用模块的建立与使用 5 5 . . 过程与参数传递过程与参数传递 本章要点:本章要点: ACCESS实例教程 VBAVBA(Visual Basic for Application)(Visual Basic for Application)是是Microsoft OfficeMicrosoft Office 系列软件的系列软件的内置编程语言内置编程语言; ; 其语法结构与其语法结构与Visual BasicVisual Basic编程语言互相兼容编程语言互相兼容; VB; VB是微软是微软 公司推出的可视化公司推出的可视化BASICBASIC语言,是一种编程简单、功能强语言,是一种编程简单、功能强 大的面向对象开发工具,我们可以像编写大的面向对象开发工具,我们可以像编写VBVB程序那样来编程序那样来编 写写VBAVBA程序。程序。 采用的是面向对象的编程机制和可视化的编程环境。采用的是面向对象的编程机制和可视化的编程环境。 用用VBAVBA语言编写的代码,将保存在语言编写的代码,将保存在AccessAccess中的一个模块里中的一个模块里 ,并通过类似在窗体中激发宏的操作那样来启动这个模块,并通过类似在窗体中激发宏的操作那样来启动这个模块 ,从而实现相应的功能。,从而实现相应的功能。 VBAVBA简介简介 ACCESS实例教程 注意:注意: p VB语言开发系统是独立运行的开发环境,它创 建的应用程序可以独立运行在Windows平台上 ; p 而VBA则不同,其编程环境和VBA程序都必须 依赖Office应用程序(如Access、Word、 Excel等)。 VBAVBA简介简介 ACCESS实例教程 VBAVBA编程环境编程环境 在在Access 2003Access 2003提供的提供的“ “模块模块” ”数据库数据库对象对象中,使中,使 用用VBAVBA程序设计语言,在不同的模块中实现程序设计语言,在不同的模块中实现VBAVBA 代码设计,可以解决实际开发中的复杂应用。代码设计,可以解决实际开发中的复杂应用。 要用要用Access 2003Access 2003来完成一个实际的数据库应用来完成一个实际的数据库应用 系统,就应该掌握系统,就应该掌握VBAVBA。 ACCESS实例教程 8.1 8.1 认识模块对象认识模块对象 模块是由声明、语句和过程组成的集合模块是由声明、语句和过程组成的集合,以,以 VBAVBA(Visual Visual Basic Basic for for ApplicationApplication)语言编写,)语言编写, 作为一个已命名的单元存储在一起。作为一个已命名的单元存储在一起。 模块有模块有2 2种类型:种类型:类模块类模块和和标准模块标准模块。使用模块可。使用模块可 以在实际开发中实现较为复杂的功能。以在实际开发中实现较为复杂的功能。 ACCESS实例教程 (1 1)模块:模块:模块由一个或多个过程组成,每个过程实现一个模块由一个或多个过程组成,每个过程实现一个 或几个功能。模块的执行通过特定事件激发相应的事件或几个功能。模块的执行通过特定事件激发相应的事件 过程实现。过程实现。 (2 2)事件过程:事件过程:事件过程是一组代码,用于响应窗体事件或事件过程是一组代码,用于响应窗体事件或 报表事件。报表事件。 (3 3)类模块类模块:类模块是包含代码和数据的集合,可以看作是类模块是包含代码和数据的集合,可以看作是 没有物理表示的控件,总是与某一特定的窗体或报表相没有物理表示的控件,总是与某一特定的窗体或报表相 关联。窗体模块和报表模块都属于类模块。关联。窗体模块和报表模块都属于类模块。 (4 4)标准模块:标准模块:标准模块是代码的集合,包含的过程不与任标准模块是代码的集合,包含的过程不与任 何其他对象相关联,是数据库对象使用的公共过程,保何其他对象相关联,是数据库对象使用的公共过程,保 存在数据库窗口中。存在数据库窗口中。 8.1.1 8.1.1 模块的基本概念模块的基本概念 ACCESS实例教程 8.1.2 8.1.2 启动启动AccessAccess的编程界面的编程界面 Access Access的编程界面称为的编程界面称为VBEVBE(Visual Basic EditorVisual Basic Editor),是),是 Microsoft OfficeMicrosoft Office所有组件公用的程序编辑系统。所有组件公用的程序编辑系统。 方法方法1 1:在窗体或报表设计视图中选控件在窗体或报表设计视图中选控件单击标准工具栏的单击标准工具栏的“ 生成器生成器”按钮按钮在在“选择生成器选择生成器”对话框中选择对话框中选择“代代 码生成器码生成器”。 方法方法2 2:右击窗体或报表设计视图中控件右击窗体或报表设计视图中控件快捷菜单中选快捷菜单中选“事件事件 生成器生成器”“选择生成器选择生成器”对话框中选择代码生成器对话框中选择代码生成器 ”。 ACCESS实例教程 8.1.3 VBE8.1.3 VBE窗口窗口 VBEVBE窗口由工具栏、工程资源管理器窗口、窗口由工具栏、工程资源管理器窗口、 属性属性 窗口、代码窗口和立即窗口组成。窗口、代码窗口和立即窗口组成。 工程窗口 选择对象 属性窗口 选择对象 的属性 代码 窗口 选择 事件 ACCESS实例教程 (1)(1)工程窗口工程窗口 也称工程资源管理器也称工程资源管理器 ,一个数据库应用系统就是一一个数据库应用系统就是一 个工程,个工程,系统中的所有类模块及标准模块对象都在该窗系统中的所有类模块及标准模块对象都在该窗 口中显示出来。口中显示出来。 类模块类模块 标准模块标准模块 ACCESS实例教程 (2)(2)属性窗口属性窗口 属性窗口列出了选定对象的属性,可以在设计时查属性窗口列出了选定对象的属性,可以在设计时查 看、改变这些属性。当选取了多个控件时,属性窗口会看、改变这些属性。当选取了多个控件时,属性窗口会 列出所有控件的共同属性。列出所有控件的共同属性。 ACCESS实例教程 (3)(3)代码窗口代码窗口 代码窗口用来显示、编写以及修改代码窗口用来显示、编写以及修改VBA VBA 代码。实际操代码。实际操 作中,可以打开多个代码窗口,查看不同窗体或模块中的作中,可以打开多个代码窗口,查看不同窗体或模块中的 代码,代码窗口之间可以进行复制和粘贴。代码,代码窗口之间可以进行复制和粘贴。 对象框对象框 过程框过程框 ACCESS实例教程 编写模块对象的代码在代码窗口进行。 (1)窗口顶部有2个组合框,左边对象框显示所有对象名称,右边 过程框显示当前对象能识别的所有事件名称。选定一个对象, 再选定一个事件,系统会自动生成相应事件过程的起始行与结 束行,只须在两行中间添加过程代码即可。 “通用” 过程可以被所有控件调用。某控件的过程只在关联事 件中有效。 (2)窗口中央代码区有声明区和过程区,声明区中声明模块使用的 变量,过程区显示一个或多个过程,之间用一条灰线分隔。 (3)窗口底部有2个按钮,单击“过程视图”按钮,只显示当前过 程。单击右边“完整的模块视图”按钮,窗口显示全部过程。 ACCESS实例教程 8.1.4 8.1.4 标准工具栏标准工具栏 例例8-1:8-1:创建一个创建一个类模块。类模块。 1、打开数据库; 2、新创建窗体窗体名称为w1w1; 3、在窗体中添加命令按钮命令按钮名字为c1c1; 4、选择c1c1打开属性【单击】打开【代码生成器】; ACCESS实例教程 Private Sub Command0_Click() DoCmd.CloseDoCmd.Close End Sub DoCmd为对象用来 调用内置的方法, Close关闭窗体 例例8-1:8-1:创建一个创建一个类模块。类模块。 对象框对象框 过程框过程框 ACCESS实例教程 例例8-2:8-2:创建一个创建一个标准模块。标准模块。 1 1、打开数据库;、打开数据库; 2 2、选择、选择【模块模块】对象对象 单击单击【新建新建】按钮;按钮; 3 3、在、在VBEVBE中编辑如下程序;中编辑如下程序; 过程名为过程名为aaaa,x x,y y 为整型变量为整型变量 z z为整型变量,存放为整型变量,存放 x x和和y y的乘积。的乘积。 显示信息框显示信息框 ACCESS实例教程 例例8-2:8-2:创建一个创建一个标准模块。标准模块。 4、保存模块名为模块名为mjmj; 5、新创建窗体窗体名称为w2w2; 6、在窗体中添加两个文本框名称分别为名称分别为t1t1,t2t2; 7 7、添加命令按钮、添加命令按钮名字为c1c1; 8、选择c1c1打开属性【单击】打开【代码生成器】; 调用过程调用过程aaaa,并将文本,并将文本 框的值传递给框的值传递给aaaa ACCESS实例教程 8.1.7 8.1.7 使用提示与帮助使用提示与帮助 在代码窗口输入代码时,系统会自动显示提示信息在代码窗口输入代码时,系统会自动显示提示信息 ,包括关键字列表、属性列表、过程参数列表等,在,包括关键字列表、属性列表、过程参数列表等,在 列表中选取一项后双击鼠标,所选值会自动添加到当列表中选取一项后双击鼠标,所选值会自动添加到当 前光标处。前光标处。 ACCESS实例教程 8.2 VBA8.2 VBA程序设计基础程序设计基础 8.2.1 8.2.1 面向对象的程序设计的基本概念面向对象的程序设计的基本概念 (1 1)对象)对象 在自然界中,一个对象就是一个实体,如一辆汽车在自然界中,一个对象就是一个实体,如一辆汽车 就是一个对象。在面向对象的程序设计中,对象代表应就是一个对象。在面向对象的程序设计中,对象代表应 用程序中的元素,如表、窗体、按钮等。用程序中的元素,如表、窗体、按钮等。 (2 2)属性)属性 属性是对象的特征。如汽车有颜色和型号属性,按属性是对象的特征。如汽车有颜色和型号属性,按 钮有标题和名称属性。对象的类别不同,属性会有所不钮有标题和名称属性。对象的类别不同,属性会有所不 同。同类别对象的不同实例,属性也有差异。例如,同同。同类别对象的不同实例,属性也有差异。例如,同 是命令按钮,名称属性不允许相同。是命令按钮,名称属性不允许相同。 ACCESS实例教程 (3 3)事件)事件 事件是对象能够识别的动作。如按钮可以识别单击事件是对象能够识别的动作。如按钮可以识别单击 事件、双击事件等。在类模块每一个过程的开始行,都事件、双击事件等。在类模块每一个过程的开始行,都 显示对象名和事件名。如:显示对象名和事件名。如:Private Sub c1_Click()Private Sub c1_Click()。 (4 4)方法)方法 方法是对象能够执行的动作,决定了对象能完成什方法是对象能够执行的动作,决定了对象能完成什 么事。不同对象有不同的方法。如么事。不同对象有不同的方法。如closeclose方法能关闭一个方法能关闭一个 窗体。窗体。 ACCESS实例教程 (5 5)集合)集合 集合由许多与对象有关的键和值组成,其中的键集合由许多与对象有关的键和值组成,其中的键 和值是配对的。如一本书是一个对象,书的页码是键和值是配对的。如一本书是一个对象,书的页码是键 ,页码对应的内容是值。所有配对的页码和内容组成,页码对应的内容是值。所有配对的页码和内容组成 了书对象的集合。了书对象的集合。 (6 6)过程)过程 过程是由代码组成的单元,包含一系列计算语句和过程是由代码组成的单元,包含一系列计算语句和 执行语句。每一个过程都有名字,过程名不能与所在执行语句。每一个过程都有名字,过程名不能与所在 模块的模块名相同。过程有两种类型:模块的模块名相同。过程有两种类型:subsub过程(无返过程(无返 回值),回值),functionfunction过程(有返回值)。过程(有返回值)。 ACCESS实例教程 例例8-38-3:创建一个类模块,:创建一个类模块, 动态设置控件属性动态设置控件属性 (1 1)在窗体)在窗体ctct中创建一个文本框中创建一个文本框名称为名称为t1t1。 (2 2)在窗体)在窗体ctct中创建一个中创建一个标签标签名称为名称为b1b1标题为标题为“欢迎你欢迎你 !”。 (3 3)在窗体)在窗体ctct中创建三个中创建三个命令按钮命令按钮名称分别为名称分别为c1c1、c2c2、 c3c3标题分别为标题分别为“红色红色”、“绿色绿色”、“蓝色蓝色”。 ACCESS实例教程 (4 4)设置各)设置各按钮按钮的前景色,在属性窗口可查的前景色,在属性窗口可查 看颜色值。看颜色值。 (5 5)c1c1的的clickclick事件代码:事件代码: t1.BackColor = 255t1.BackColor = 255 b1.ForeColor = 255 b1.ForeColor = 255 ACCESS实例教程 (6 6)c2c2的的clickclick事件代码:事件代码: t1.BackColor = 33792t1.BackColor = 33792 b1.ForeColor = 33792 b1.ForeColor = 33792 (7 7)c3c3的的clickclick事件代码:事件代码: t1.BackColor = 16711680t1.BackColor = 16711680 b1.ForeColor = 16711680 b1.ForeColor = 16711680 执行结果:执行结果: ACCESS实例教程 DocmdDocmd是是AccessAccess的一个特殊对象,用来调用内置方法,在程的一个特殊对象,用来调用内置方法,在程 序中实现对序中实现对AccessAccess的操作,诸如打开窗口、关闭窗体、打开报表的操作,诸如打开窗口、关闭窗体、打开报表 、关闭报表等。、关闭报表等。 DoCmd DoCmd 对象的大多数方法都有参数,有些参数是必需的,有对象的大多数方法都有参数,有些参数是必需的,有 些则是可选的。若省略可选参数,参数将采用默认值。些则是可选的。若省略可选参数,参数将采用默认值。 8.2.2 Docmd8.2.2 Docmd对象对象 (1 1)用)用DoCmd DoCmd 对象打开窗体对象打开窗体 格式:格式:DoCmd.OpenForm “DoCmd.OpenForm “窗体名窗体名“ “ 功能:用默认形式打开指定窗体。功能:用默认形式打开指定窗体。 例如:例如:DoCmd.OpenForm “DoCmd.OpenForm “文本框练习文本框练习“ “ ACCESS实例教程 (2 2)用)用DoCmd DoCmd 对象关闭窗体对象关闭窗体 格式格式1 1:DoCmd.Close acForm, “DoCmd.Close acForm, “窗体名窗体名“ “ 功能:关闭指定窗体。功能:关闭指定窗体。 例如:例如:DoCmd.Close acForm, “DoCmd.Close acForm, “文本框练习文本框练习“ “ 格式格式2 2:DoCmd.Close DoCmd.Close 功能:关闭当前窗体。功能:关闭当前窗体。 (3 3)用)用DoCmd DoCmd 对象打开报表对象打开报表 格式:格式:DoCmd.OpenReport “DoCmd.OpenReport “报表名报表名“,acViewPreview“,acViewPreview 功能:用预览形式打开指定报表。功能:用预览形式打开指定报表。 例如:例如:DoCmd.OpenReport “DoCmd.OpenReport “工资报表工资报表“,acViewPreview“,acViewPreview ACCESS实例教程 (4 4)用)用DoCmd DoCmd 对象关闭报表对象关闭报表 格式格式1 1:DoCmd.Close acReport, “DoCmd.Close acReport, “报表名报表名“ “ 功能:关闭指定报表。功能:关闭指定报表。 例如:例如:DoCmd.Close acReport, “DoCmd.Close acReport, “工资报表工资报表“ “ 格式格式2 2:DoCmd.Close DoCmd.Close 功能:关闭当前报表。功能:关闭当前报表。 (5 5)用)用DoCmd DoCmd 对象运行宏对象运行宏 格式:格式:DoCmd.RunMacro “DoCmd.RunMacro “宏名宏名“ “ 功能:运行指定宏。功能:运行指定宏。 例如:例如:DoCmd.RunMacro “DoCmd.RunMacro “宏宏1“1“ (6 6)用)用DoCmd DoCmd 对象退出对象退出AccessAccess。 格式:格式:DoCmd.QuitDoCmd.Quit 功能:关闭所有功能:关闭所有AccessAccess对象和对象和AccessAccess本身。本身。 ACCESS实例教程 (1 1)在窗体中建立)在窗体中建立5 5个按钮个按钮名称分别为名称分别为c1c1、c2c2、c3c3、c4c4、 c5c5标题分别为标题分别为“打开文本框练习窗体打开文本框练习窗体”、“关闭文本关闭文本 框练习窗体框练习窗体”、“打开工资报表打开工资报表”、“关闭工资报表关闭工资报表” 、“退出退出Access” Access” 。 例例8-48-4:使用:使用DoCmdDoCmd对象对象 ACCESS实例教程 (2 2)c1c1代码:代码:DoCmd.OpenForm “DoCmd.OpenForm “文本框练习文本框练习“ “ (3 3)c2c2代码:代码:DoCmd.Close acForm, “DoCmd.Close acForm, “文本框练习文本框练习“ “ (4 4)c3c3代码:代码:DoCmd.OpenReport “DoCmd.OpenReport “工资报表工资报表“, “, acViewPreviewacViewPreview (5 5)c4c4代码:代码:DoCmd.Close acReport, “DoCmd.Close acReport, “工资报表工资报表“ “ (6 6)c5c5代码:代码:DoCmd.QuitDoCmd.Quit ACCESS实例教程 (7 7)转到窗体视图)转到窗体视图单击不同按钮执行不同操作。单击不同按钮执行不同操作。 ACCESS实例教程 8.2.3 8.2.3 数据类型与数据类型转换数据类型与数据类型转换 VBAVBA中的基本数据类型中的基本数据类型 VBA在数据类型和定义方式上均继承了传统的Basic语 言的特点。 Access 数据表中的字段使用的数据(OLE对象和备注 字段数据类型除外)在VBA中都有对应的类型。 在VBA中,数据类型用来决定变量可以保存何种数据。 VBA支持多种数据类型,为用户编程提供了方便。 ACCESS实例教程 8.2.3 8.2.3 数据类型与数据类型转换数据类型与数据类型转换 VBAVBA类型类型符号符号字段类型字段类型取值范围取值范围 字节数字节数 ByteByte字节字节0 0255255之间的整数之间的整数 1 1 IntegerInteger%整型整型-32768-327683276732767之间的整数之间的整数 2 2 LongLong Sum Print “Sum=“; Sum End Sub End Sub 良好的编程习惯应该是良好的编程习惯应该是“ “先声明变量,后使用先声明变量,后使用 变量变量”,这样做可以提高程序的效率,同时也使,这样做可以提高程序的效率,同时也使 程序易于调试。程序易于调试。 ACCESS实例教程 声明而未赋值的变量的值为:声明而未赋值的变量的值为: 数值型变量初始化为数值型变量初始化为0 0; 字符型变量为零长度字符串;字符型变量为零长度字符串; 变体型变量初始化为变体型变量初始化为 EmptyEmpty。 变量的初始化变量的初始化 ACCESS实例教程 (5 5)一个特殊的模块变量)一个特殊的模块变量 pp 本地窗口打开时,自动生成一个名为本地窗口打开时,自动生成一个名为“MeMe”的特殊模块变量的特殊模块变量 。对于类模块,定义为。对于类模块,定义为MeMe。MeMe是对象的引用,引用当前模块是对象的引用,引用当前模块 中当前类的实例。中当前类的实例。 pp MeMe变量不需要专门定义,直接使用即可。变量不需要专门定义,直接使用即可。 例如:用代码定义例如:用代码定义“学生信息学生信息”窗体中窗体中“Lab”Lab”标签的标题标签的标题 属性,以下两种方法效果是一样的:属性,以下两种方法效果是一样的: 标准方法:标准方法:Forms! Forms! 学生信息学生信息!Lab.Caption=“!Lab.Caption=“学生信息浏览学生信息浏览“ “ 常用方法常用方法:MeMe!Lab.Caption=“!Lab.Caption=“学生信息浏览学生信息浏览“ “ ACCESS实例教程 8.2.5 8.2.5 变量的作用域和生命周期变量的作用域和生命周期 1 1变量的作用域变量的作用域 变量的作用域是变量在程序中起作用的范围。分变量的作用域是变量在程序中起作用的范围。分3 3个层次,从低到个层次,从低到 高依次为:局部、模块、全局。高依次为:局部、模块、全局。 (1 1)局部变量)局部变量 又称为本地变量,仅在声明变量的过程中有效。又称为本地变量,仅在声明变量的过程中有效。在过程和函数内部在过程和函数内部 用用dimdim声明或不用声明接使用的变量,都是局部变量声明或不用声明接使用的变量,都是局部变量。局部变量在本地。局部变量在本地 拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。拥有最高级,当存在同名的模块级变量时,模块级变量被屏蔽。 (2 2)模块变量)模块变量 模块变量在所声明模块的所有函数和所有过程都有效,模块变量在所声明模块的所有函数和所有过程都有效,变量定义在变量定义在 模块所有过程之外的起始位置模块所有过程之外的起始位置,通常是窗体变量或标准模块变量。,通常是窗体变量或标准模块变量。 (3 3)全局变量)全局变量 全局变量又称为公共变量,全局变量又称为公共变量,定义在标准模块所有过程之外定义在标准模块所有过程之外,在所有,在所有 模块的所有过程和函数中都有效。模块的所有过程和函数中都有效。 定义格式:定义格式:public public 变量名变量名 as as 数据类型数据类型 ACCESS实例教程 pp 变量的生命周期是指变量从首次出现到变量消失的代码执行变量的生命周期是指变量从首次出现到变量消失的代码执行 时间时间。变量首次出现是指声明变量并为其分配存储空间,变。变量首次出现是指声明变量并为其分配存储空间,变 量消失是指变量所在的程序执行完毕。量消失是指变量所在的程序执行完毕。 pp 局部变量局部变量: :的生命周期从过程或函数被调用到运行结束。的生命周期从过程或函数被调用到运行结束。 pp 全局变量全局变量: :的生命周期从声明到的生命周期从声明到AccessAccess应用程序结束。应用程序结束。 pp 过程中用过程中用dimdim定义的变量,每次调用过程时都重新开始,过定义的变量,每次调用过程时都重新开始,过 程结束时立即消失程结束时立即消失。 pp 用用staticstatic代替代替dimdim定义变量,可以在过程实例间保留局部变量定义变量,可以在过程实例间保留局部变量 的值。用的值。用staticstatic定义的变量称为定义的变量称为静态变量静态变量,作用范围与,作用范围与dimdim相相 同,在整个模块执行时一直存在。同,在整个模块执行时一直存在。 2 2变量的生命周期变量的生命周期 ACCESS实例教程 例例8-68-6:用:用staticstatic和和dimdim定义局部变量定义局部变量 (1 1)在窗体中建立)在窗体中建立2 2个文本框个文本框分别命名为分别命名为t1t1和和t2t2附加标签附加标签 的标题分别为的标题分别为“静态变量静态变量”和和“局部变量局部变量”。 (2 2)在窗体中建立)在窗体中建立命令按钮命令按钮名称为名称为c1c1标题为标题为“计算计算”。 ACCESS实例教程 (3 3)c1c1的的clickclick代码:代码: StaticStatic x x As Integer As Integer x x变量的生命周期为全程变量的生命周期为全程 DimDim y y As Integer As Integer y y变量的生命周期为局部变量的生命周期为局部 x = x + 1x = x + 1:y = y + 1y = y + 1 t1 = x t1 = x:t2 = yt2 = y (4 4)执行时不断单击命令按钮,静态变量文本框中的值)执行时不断单击命令按钮,静态变量文本框中的值 每次增加每次增加1 1,而局部变量文本框中的值总是,而局部变量文本框中的值总是1 1。 ACCESS实例教程 1. 1. 数组的概念数组的概念 数组是由一组具有相同数据类型的变量数组是由一组具有相同数据类型的变量( (称为数组元素称为数组元素) )构构 成的集合。为了识别数组中不同的元素,数组元素可以通成的集合。为了识别数组中不同的元素,数组元素可以通 过下标来访问,数组下标默认从过下标来访问,数组下标默认从0 0开始。开始。 说明:说明: (1 1)数组要先定义后使用,)数组要先定义后使用,VBAVBA不允许隐式声明数组。不允许隐式声明数组。 (2 2)同一过程中数组名不能与其他变量重名。)同一过程中数组名不能与其他变量重名。 8.2.7 8.2.7 数组数组 ACCESS实例教程 2 2声明一维数组声明一维数组 格式格式1 1:dim dim 数组名数组名( (下标上限下标上限) as ) as 数据类型数据类型 格式格式2 2:dim dim 数组名数组名( (下标下限下标下限 to to 下标上限下标上限) as ) as 数据类型数据类型 例如:例如:dim a(6) as integerdim a(6) as integer 功能:声明了有功能:声明了有7 7个元素的数组个元素的数组a a,元素下标从,元素下标从0 0到到6 6,默认值均为,默认值均为0 0。 例如:例如:dim b(1 to 6) as stringdim b(1 to 6) as string 功能:声明了有功能:声明了有6 6个元素的数组个元素的数组b b,下标从,下标从1 1到到6 6,默认值均为空串。,默认值均为空串。 说明:说明: (1 1)如果不定义数组下标的下限,默认下标下限为)如果不定义数组下标的下限,默认下标下限为0 0。 (2 2)数组定义中的参数必须是常数。)数组定义中的参数必须是常数。 (3 3)如果使用)如果使用asas语句定义数组类型,同一数组只能存放相同类型数据。语句定义数组类型,同一数组只能存放相同类型数据。 ACCESS实例教程 声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。 一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标) 数组赋值与引用:数组赋值与引用: bAge(0)50 bAge(1)20 bAge(2)70 Dim sum as Byte Sum= bAge(0)+ bAge(1)+ bAge(2) ACCESS实例教程 3 3声明多维数组声明多维数组 格式:格式:dim dim 数组名数组名( (下标上限下标上限1 1,下标上限,下标上限2 2,) as ) as 数据类型数据类型 例如:例如:dim c(3dim c(3,4) as integer4) as integer 功能:声明有功能:声明有2020个元素的数组个元素的数组c c,行下标从,行下标从0 0到到3 3,列下标从,列下标从0 0到到4 4。 例如:例如:dim d(1 to 3dim d(1 to 3,2 to 4) as integer2 to 4) as integer 功能:声明有功能:声明有9 9个元素的数组个元素的数组d d,行下标从,行下标从1 1到到3 3,列下标从,列下标从2 2到到4 4。 4 4使用数组使用数组 声明数组后,每个数组元素都被当作单个变量使用。声明数组后,每个数组元素都被当作单个变量使用。 一维数组元素的引用格式:数组名(下标)一维数组元素的引用格式:数组名(下标) 二维数组元素的引用格式:数组名(下标二维数组元素的引用格式:数组名(下标1 1,下标,下标2 2) ACCESS实例教程 例例8-78-7:使用符号常量和数组:使用符号常量和数组 (1 1)在窗体建文本框)在窗体建文本框名称为名称为t1t1。 (2 2)在窗体建命令按钮)在窗体建命令按钮名称为名称为c1c1标题为标题为“确定确定”。 (3 3)命令按钮)命令按钮c1c1的单击事件代码:的单击事件代码: const AA = const AA = “欢迎你欢迎你! !” 定义符号常量定义符号常量 dim b(1) As Stringdim b(1) As String 定义字符串数组定义字符串数组 b(0) = AA b(0) = AA b(1) = t1 b(1) = t1 MsgBox b(0) c1; 4.4. C1C1的单击事件代码:的单击事件代码: Private Sub c1_Click()Private Sub c1_Click() Dim aa As String Dim aa As String aa = InputBox(“ aa = InputBox(“请写出您的姓名:请写出您的姓名:“, “, “输入框输入框“, “)“, “) bb = MsgBox(aa “: bb = “ Case “!“, “?“, “:“, “.“, “,“, “;“: bb = “标点符号标点符号“ “ Case Else: bb = “ Case Else: bb = “特殊字符特殊字符“ “ End Select End Select MsgBox bb MsgBox bb ACCESS实例教程 (3 3)转到窗体视图)转到窗体视图文本框中输入字母文本框中输入字母单击按单击按 钮显示消息框钮显示消息框 。 ACCESS实例教程 8.4.4 8.4.4 选择函数与计时器事件选择函数与计时器事件 1 1iifiif函数函数 格式:格式:iif(iif(条件,表达式条件,表达式1 1,表达式,表达式2)2) 功能:功能:如果条件为真,函数值为表达式如果条件为真,函数值为表达式1 1的值,否则,函数值为表的值,否则,函数值为表 达式达式2 2的值。的值。 例:例:y=iif(aby=iif(ab,“a“a大大“ “,“b“b大大“)“) 2 2switchswitch函数函数 格式:格式:switch(switch(条件条件1 1,表达式,表达式1 1,条件,条件2 2,表达式,表达式,条件,条件n n,表,表 达式达式n)n) 功能:功能:从左到右依次判断,遇到第一个条件为真时返回对应表达式从左到右依次判断,遇到第一个条件为真时返回对应表达式 的值。的值。 说明:说明:条件与表达式成对,当多个条件为真时,只取第一个条件的条件与表达式成对,当多个条件为真时,只取第一个条件的 对应表达式对应表达式。 例:例:y=switch(x0x0,1)1) ACCESS实例教程 3 3choosechoose函数函数 格式:格式:choose(choose(索引式,值索引式,值1 1,值,值2 2,值,值n)n) 功能:功能:根据索引项的值,返回对应的值。根据索引项的值,返回对应的值。 说明说明:索引项通常是整型变量名,取值范围:索引项通常是整型变量名,取值范围1 1n n,超出范围时返回,超出范围时返回NULLNULL 。 例如:例如:y=choose(xy=choose(x,“ “优秀优秀“ “,“ “良好良好“ “,“ “中等中等“ “,“ “及格及格“ “,“ “不及格不及格“)“) 4 4计时器事件计时器事件 VBAVBA没有直接提供时间控件,通过没有直接提供时间控件,通过timertimer事件实现定时功能。事件实现定时功能。 方法方法:首先设置窗体的计时器间隔属性:首先设置窗体的计时器间隔属性TimerIntervalTimerInterval,然后给,然后给timertimer事事 件写过程代码。打开窗体时,每隔一个时间间隔激发一次件写过程代码。打开窗体时,每隔一个时间间隔激发一次timertimer事事 件,事件的过程就被执行一次,从而实现件,事件的过程就被执行一次,从而实现“定时定时”处理功能。处理功能。 计时器间隔的时间单位为毫秒,计时器间隔的时间单位为毫秒,10001000毫秒毫秒=1=1秒。秒。 ACCESS实例教程 例例8-16:8-16:显示电子表显示电子表 (1 1)建立)建立2 2个标签个标签名称为名称为b1b1和和b2b2标题都为数字标题都为数字1 1。 (2 2)打开窗体的属性窗口)打开窗体的属性窗口单击单击“事件事件”选项卡选项卡设置计时器设置计时器 间隔属性为间隔属性为10001000。 (3 3)在)在VBEVBE窗口窗口“通用通用- -声明声明”写代码:写代码: Public a As Boolean aPublic a As Boolean a为逻辑型,默认为逻辑型,默认falsefalse (4 4)FormForm的的TimerTimer事件代码:事件代码: a = Not aa = Not a b1.Caption = Time() b1.Caption = Time() b2.Caption = CInt(b2.Caption) + 1 b2.Caption = CInt(b2.Caption) + 1 b2.ForeColor = IIf(a = True, 255, 16711680) b2.ForeColor = IIf(a = True, 255, 16711680) ACCESS实例教程 (5 5)转到窗体视图。)转到窗体视图。b1b1中显示系统当前时间,中显示系统当前时间,b2b2中中 的数字每秒增加的数字每秒增加1 1,数字的颜色红、蓝交替,每,数字的颜色红、蓝交替,每 秒换一次。秒换一次。 ACCESS实例教程 8.4.5 8.4.5 验证函数验证函数 函数名功能 IsNumeric(x)验证x是否为数值,若返回true, 是数值 IsDate(x)验证x是否为日期值,若返回true, 是日期或可识别 的有效日期 IsNull(x)验证x是否为无效值,若返回true,是无效值 IsEmpty(x)验证x是否已被初始化,若返回true,未被初始化 IsArray(x)验证x是否为数组,若返回true,是数组 IsError(x)验证x是否为一个错误值,若返回true,有错误 IsObject(x)验证x是否为对象变量,若返回true,是对象 VBAVBA的常用验证函数的常用验证函数 ACCESS实例教程 例例8-17:8-17:检验字符串类型检验字符串类型 (1 1)建文本框)建文本框名称为名称为t1t1附加标签标题为附加标签标题为“输入年龄:输入年龄:”。 (2 2)建命令按钮)建命令按钮名称分别为名称分别为c1c1标题为标题为“验证验证”。 (3 3)c1c1的的clickclick事件代码:事件代码: If t1 = “ Or IsNull(t1) ThenIf t1 = “ Or IsNull(t1) Then MsgBox “ MsgBox “不能为空不能为空!“, vbCritical, “!“, vbCritical, “提示提示“ “ ElseIf IsNumeric(t1) = False Then ElseIf IsNumeric(t1) = False Then MsgBox “ MsgBox “必须是数字必须是数字!“, vbCritical, “!“, vbCritical, “提示提示“ “ ElseIf t1 = 150 Then ElseIf t1 = 150 Then MsgBox “ MsgBox “超出范围超出范围!“, vbCritical, “!“, vbCritical, “提示提示“ ElseElse MsgBox “ MsgBox “验证通过验证通过!“, vbInformation, “!“, vbInformation, “提示提示“ “ End If End If ACCESS实例教程 (4 4)转到窗体视图)转到窗体视图在文本框中输入一个字母在文本框中输入一个字母单单 击击【验证验证】按钮按钮消息框显示消息消息框显示消息“必须是数必须是数 字!字!”。 ACCESS实例教程 8.4.6 8.4.6 循环语句循环语句 当某一程序段需要反复执行,用循环结构当某一程序段需要反复执行,用循环结构 实现。循环结构对应两类循环语句:实现。循环结构对应两类循环语句: pp 先判断后执行的循环语句(当型循环结构)先判断后执行的循环语句(当型循环结构) pp 先执行后判断的循环语句(直到型循环结构)先执行后判断的循环语句(直到型循环结构) ACCESS实例教程 1 1for-nextfor-next循环循环 for-nextfor-next循环能使语句序列运行指定次数,循环中有一个计循环能使语句序列运行指定次数,循环中有一个计 数器变量,变量的值随每一次循环增加或减少。数器变量,变量的值随每一次循环增加或减少。 for-nextfor-next是当型循环结构,先判断后执行。是当型循环结构,先判断后执行。 (1 1)格式:格式:for for 循环变量循环变量= =初值初值 to to 终值终值 step step 步长步长 语句序列语句序列 nextnext (2 2)功能:功能: 先将初值赋给循环变量,再将循环变量的当前值与终值做比先将初值赋给循环变量,再将循环变量的当前值与终值做比 较,如果比较结果为真执行语句序列,增加一个步长,再进行比较,如果比较结果为真执行语句序列,增加一个步长,再进行比 较,如果比较结果仍为真,继续循环较,如果比较结果仍为真,继续循环。如果比较结果为假,。如果比较结果为假, 结束循环。结束循环。 ACCESS实例教程 pp 步长大于步长大于0 0时判断循环变量的当前值是否大于终值,步长小于时判断循环变量的当前值是否大于终值,步长小于 0 0判断循环变量的当前值是否小于终值。步长为判断循环变量的当前值是否小于终值。步长为0 0时导致循环时导致循环 无法结束,所以步长不要设置为无法结束,所以步长不要设置为0 0。 pp 步长可以是整数或小数,步长为步长可以是整数或小数,步长为1 1时可以省略。时可以省略。 pp 除第一次循环以外,其他循环增加一个步长后与终值比较。除第一次循环以外,其他循环增加一个步长后与终值比较。 pp forfor循环可以嵌套。循环可以嵌套。 pp 在在forfor循环中可以用循环中可以用exit forexit for语句强行中止循环。语句强行中止循环。 (3 3)说明说明 ACCESS实例教程 练习练习1 1:阅读下面程序段,循环结束后,各变量的值是多少?阅读下面程序段,循环结束后,各变量的值是多少? dim s as integer, i as integerdim s as integer, i as integer s=0 s=0 for i=1 to 10 step 2 for i=1 to 10 step 2 s=s+i s=s+i i=i+2 i=i+2 next next 结论:循环结束后,变量结论:循环结束后,变量i i的值是的值是1313,变量,变量 s s 的值是的值是1515。 1 1、i=1 s=0+1=1 i=1+2=3i=1 s=0+1=1 i=1+2=3 step 2 i=i+2=5 step 2 i=i+2=5 2 2、i=5 s=1+5=6 i=5+2=7i=5 s=1+5=6 i=5+2=7 step 2 i=i+2=9 step 2 i=i+2=9 3 3、i=9 s=6+9=15 i=9+2=11i=9 s=6+9=15 i=9+2=11 step 2 i=i+2=13 step 2 i=i+2=13 步长相当于步长相当于4 4: for i=1 to 10 step 4for i=1 to 10 step 4 s=s+i s=s+i next next ACCESS实例教程 练习练习2 2:下面的程序段使得循环中途退出:下面的程序段使得循环中途退出 Dim s as integer, i as integerDim s as integer, i as integer S=0S=0 For i=0 to 100 step 2For i=0 to 100 step 2 s=s+i s=s+i if s=20 then exit for if s=20 t

温馨提示

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

评论

0/150

提交评论