ACCESS考点分析8_第1页
ACCESS考点分析8_第2页
ACCESS考点分析8_第3页
ACCESS考点分析8_第4页
ACCESS考点分析8_第5页
已阅读5页,还剩245页未读 继续免费阅读

下载本文档

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

文档简介

1、ACCESS考点分析第第8 8章章 模模 块块在Access系统中,借助宏对象可以完成事件的响应处理,例如,打开和关闭窗体、报表等。不过,宏的使用也有一定的局限性,一是它处理一些简单的操作,对于复杂条件和循环等结构则无能为力;二是宏对数据库对象的处理,例如,表对象或查询对象的处理,能力也很弱。在这种情况下,可以使用Access系统提供的“模块”数据库对象来解决一些实际开发活动中的复杂应用。 本章主要介绍Access数据库的VBA代码操作以及代码“容器”类模块(包含窗体模块和报表模块)与标准模块对象的使用。考点一考点一 模块的基本概念模块的基本概念模块是Access系统中的一个重要对象,它以VB

2、A(Visual Basic for Application)语言为基础编写,以函数过程(Function)或子过程(Sub)为单元的集合方式存储。在Access中,模块分为类模块类模块和标准模标准模块块两种类型。考点一考点一 模块的基本概念模块的基本概念1、类模块、类模块 窗体模块窗体模块和报表模块报表模块都属于类模块,它们从属于各自的窗体或报表。在窗体或报表的设计视图环境下可以用两种方法两种方法进入相应的模块代码设计区域:一是鼠标点击工具栏“代码”按钮进入;二是为窗体或报表创建事件过程时,系统会自动过入相应代码设计区域。 考点一考点一 模块的基本概念模块的基本概念1、类模块、类模块 窗体模

3、块和报表模块通常都含有事件过程,而过程的运行用于响应窗体或报表上的事件。使用事件过程可以控制窗体或报表的行为以及它们对用户操作的响应。 考点一考点一 模块的基本概念模块的基本概念1、类模块、类模块 窗体模块和报表模块中的过程可以调用标准模块中已经定义好的过程。 窗体模块和报表模块具有局部特性局部特性,其作用范围局限在所属窗体或报表内部,而生命周期则是伴随着窗体或报表的打开而开始、关闭而结束。考点一考点一 模块的基本概念模块的基本概念2、标准模块、标准模块 标准模块一般用于存放供其他Access数据库对象使用的公共过程。在Access系统中可以通过创建新的模块对象而进入其代码设计环境。 标准模块

4、通常安排一些公共变量公共变量或过程过程供类模块里的过程调用。在各个标准模块内部也可以定义私有变量和私有过程仅供本模块内部使用。 考点一考点一 模块的基本概念模块的基本概念2、标准模块、标准模块 标准模块中的公共变量和公共过程具有全局特性全局特性,其作用范围在整个应用程序里,生命周期是伴随应用程序的运行而开始、关闭而结束。 考点一考点一 模块的基本概念模块的基本概念3、将宏转换为模块、将宏转换为模块 在Access系统中,根据需要可以将设计好的宏对象转换为模块代码形式。考点二考点二 创建模块创建模块过程是模块的单元组成,由VBA代码编写而成。过程分两种类型:Sub子过程和Function函数过程

5、。考点二考点二 创建模块创建模块1、在模块中加入过程、在模块中加入过程 模块是装着VBA代码的容器。在窗体或报表的设计视图里,单击工具栏“代码”按钮或者创建窗体或报表的事件过程可以进入类模块的设计和编辑窗口;单击数据库窗体中的“模块”对象标签,然后单击“新建”按钮即可进入标准模块的设计和编辑窗口。考点二考点二 创建模块创建模块1、在模块中加入过程、在模块中加入过程 一个模块包含一个声明区域,包含一个或多个子过程(以Sub开头)或函数过程(以Function开头)。模块的声明区域是用来声明模块使用的变量等项目。考点二考点二 创建模块创建模块(1)Sub过程。 又称为子过程。执行一系列操作,无返回

6、值。定义格式如下: Sub 过程名过程名 程序代码程序代码 End Sub 可以引用过程名来调用该子过程。此外,VBA提供了一个关键字Call,可显示调用一个子过程。在过程名前加上Call是一个很好的程序设计习惯。考点二考点二 创建模块创建模块(2)Function过程。 又称为函数过程。执行一系列操作,有返回值。定义格式如下: Function 过程名过程名 程序代码程序代码 End Function 函数过程不能使用Call来调用执行,需要直接引用函数过程名,并由接在函数过程名后的括号所辨别。考点二考点二 创建模块创建模块2、在模块中执行宏、在模块中执行宏 在模块的过程定义中,使用DoCm

7、d对象的RunMacro方法,可以执行设计好的宏。其调用格式为: DoCmd.RunMacro MacroName,RepeatCount,RepeatExpression 其中MacroName表示当前数据库中宏的有效名称;RepeatCount可选项,用于计算宏运行次数的整数值;RepeatExpression可选项,为数值表达式,在每一次运行宏时进行计算,结果为False(0)时,停止运行宏。考点三考点三 VBAVBA程序设计基础程序设计基础VBA是微软Office套件的内置编程语言,其语法与Visual Basic编程语言互相兼容。在Access程序设计中,当某些操作不能用其他Acce

8、ss对象实现或实现起来很困难时,就可以利用VBA语言编写代码,完成这些复杂任务。考点三考点三 VBAVBA程序设计基础程序设计基础一般Access程序设计在遇到下列情况下需要使用使用VBA代码代码: (1)创建用户自定义函数(User-defined Function,UDF)。使用UDF,可以使程序代码更加简洁而有效。 (2)复杂程序处理。可以编写选择结构、循环结构等复杂程序处理。 考点三考点三 VBAVBA程序设计基础程序设计基础(3)数据库的事务处理操作。 (4)使用ActiveX控件和其他应用程序对象。 (5)错误处理。通过使用Access的VBA代码,可以控制应用程序对错误作出反应,

9、例如,用户输入错误、对象引用错误等。而Access宏的缺点就是它们对错误处理不灵活。考点三考点三 VBAVBA程序设计基础程序设计基础1、面向对象程序设计的基本概念、面向对象程序设计的基本概念 Access内部提供了功能强大的向导机制,能处理基本的数据库操作。在此基础上再编写适当的程序代码,可以极大地改善程序功能。 Access内嵌的VBA,功能强大,采用目前主流的面向对象机制和可视化编程环境。 考点三考点三 VBAVBA程序设计基础程序设计基础(1)集合和对象 Access采用面向对象程序开发环境,其数据库窗口可以方便地访问和处理表、查询、窗体、报表、页、宏和模块对象。VBA中可以使用这些对

10、象以及范围更广泛的一些可编程对象,例如,“记录集”等。 考点三考点三 VBAVBA程序设计基础程序设计基础(1)集合和对象 一个对象就是一个实体一个对象就是一个实体,每种对象都具有一些属性以相互区分,即属性可以定属性可以定义对象的一个实例义对象的一个实例。 对象的属性按其类别会有所不同,而且同一对象的不同实例属性构成也可能有差异。 对象除了属性以外还有方法。对象的方对象的方法就是对象可以执行的行为法就是对象可以执行的行为。 考点三考点三 VBAVBA程序设计基础程序设计基础(1)集合和对象 Access应用程序由表、查询、窗体、报表、页、宏和模块对象列表构成,形成不同的类。Access数据库窗

11、体左侧显示的就是数据库的对象类,单击其中的任一对象类,就可以打开相应对象窗口。而且,其中有些对象内部,Access中,控件外观和行为可以设置定义。 集合表达的是某类对象所包含的实例构成。考点三考点三 VBAVBA程序设计基础程序设计基础(2)属性和方法 属性和方法描述了对象的性质和行为属性和方法描述了对象的性质和行为。其引用方式为:对象对象.属性属性或对象对象.行为行为。 Access中“对象”可以是单一对象,也可以是对象的集合。数据库对象的属性均可以在各自的“设计”视图中通过“属性窗体”进行浏览和设置。 考点三考点三 VBAVBA程序设计基础程序设计基础(2)属性和方法 Access中除数据

12、库的7个对象个对象外,还提供一个重要的对象:DoCmd对象对象。它的主要功能是通过调用包含在内部的方法来实现VBA编程中对Access的操作。 DoCmd对象的方法大都需要参数。有些是必给的,有些是可选的,被忽略的参数取缺省值。 Docmd对象还有许多方法,可以通过帮助文件查询使用。考点三考点三 VBAVBA程序设计基础程序设计基础(3)事件和事件过程 事件是事件是Access窗体或报表及其上的控窗体或报表及其上的控件等对象可以件等对象可以“辨识辨识”的动作的动作。在Access数据库系统里,可以通过两种来处理窗体、报表或控件的事件响应。一是使用宏对象来设置事件属性;二是为某个事件编写VBA代

13、码过程,完成指定动作,这样的代码过程称为事件过程或事件响应代码。 考点三考点三 VBAVBA程序设计基础程序设计基础实际上,Access窗体、报表和控件的事件有很多,一些主要对象事件如下 窗体窗体 事件动作和动作说明事件动作和动作说明 OnLoad 窗体加载时发生事件 OnUnLoad 窗体卸载时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnOpen 窗体打开时发生事件 OnClose 窗体关闭时发生事件 OnClick 窗体单击时发生事件 OnDblClick 窗体双击时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnMouseDown 窗体鼠标按下时发生事

14、件 OnKeyPress 窗体上键盘按键时发生事件 OnKeyDown 窗体上键盘按下键时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础报表报表 OnOpen 报表打开时发生事件 OnClose 报表关闭时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础命令按钮控件命令按钮控件 OnClick 按钮单击时发生事件 OnDblClick 按钮双击时发生事件 OnEnter 按钮获得输入焦点之前发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnGetFoucs 按钮获得输入焦点时发生事件 OnMouseDown 按钮上鼠标按下时发生事件 OnKeyPress

15、 按钮上键盘按键时发生事件 OnKeyDown 按钮上键盘按下键时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础标签控件标签控件 OnClick 标签单击时发生事件 OnDblClick 标签双击时发生事件 OnMouseDown 标签上鼠标按下时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础文本框控件文本框控件 BeforeUpdate 文本框内容更新前发生事件 AfterUpdate 文本框内容更新后发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnEnter 文本框输入焦点之前发生事件 OnGetFoucs 文本框获得输入焦点时发生事件 OnLo

16、stFoucs 文本框失去输入焦点时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnChange 文本框内容更新时发生事件 OnKeyPress 文本框内键盘按键时发生事件 OnMouseDown 文本框内鼠标按下键时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础组合框控件组合框控件 BeforeUpdate 组合框内容更新前发生事件 AfterUpdate 组合框内容更新后发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnEnter 组合框获得输入焦点之前发生事件 OnGetFoucs 组合框获得输入焦点时发生事件 OnLostFoucs 组合框失

17、去输入焦点时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnClick 组合框单击时发生事件 OnDblClick 组合框双击时发生事件 OnKeyPress 组合框内键盘按键时发生事件考点三考点三 VBAVBA程序设计基础程序设计基础选项组控件选项组控件 BeforeUpdate 选项框内容更新前发生事件AfterUpdate 选项组内容更新前发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnEnter 选项组内容更新后发生事件 OnClick 选项组单击时发生事件 OnDblClick 选项组双击时发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础单

18、选按钮控件单选按钮控件 OnKeyPress 单选按钮内键盘按键时发生事件 OnGetFoucs 单选按钮获得输入焦点时发生事件 OnLostFoucs 单选按钮失去输入时发生事件考点三考点三 VBAVBA程序设计基础程序设计基础复选框控件复选框控件 BeforeUpdate 复选框更新前发生事件 AfterUpdate 复选框更新后发生事件 OnEnter 复选框获得输入焦点之前发生事件 考点三考点三 VBAVBA程序设计基础程序设计基础OnClick 复选框单击时发生事件 OnDblClick 复选框双击时发生事件 OnGetFoucs 复选框获得输入焦点时发生事件考点三考点三 VBAVB

19、A程序设计基础程序设计基础2、VBA编程环境:编程环境:VBE界面界面 (1)进入VBE编程环境 Access模块分成类模块和标准模块两种,它们进入VBE编程环境的方式也有所不同。 对于类模块类模块,可以直接定位到窗体或报表上,然后单击工具栏上的“代码”工具钮进入;或定位到窗体、报表和控件上通过指定对象事件处理过程进入。考点三考点三 VBAVBA程序设计基础程序设计基础通过指定对象事件处理过程进入。方法有两种:一是单击属性窗体的“事件”选项卡,选中某个事件并设置属性为“(事件过程)”选项,再单击属性栏右侧的“”按钮即可进入。二是单击属性窗体的“事件”选项卡,选中某个事件直接单击属性栏右侧的“”

20、按钮,“选择生成器”对话框,选择其中的“代码生成器”,单“确定”按钮即可进入。考点三考点三 VBAVBA程序设计基础程序设计基础对于标准模块标准模块,有三种进入方法:一是对于已存在的标准模块,只需从数据库窗体对象列表上选择“模块”,双击要查看的模块对象即可进入。二是要创建新的标准模块,需从数据库窗体对象列表上选择“模块”,单击工具栏上“新建”按钮即可进入。三是在数据库对象窗体中,单级“工具”菜单中“宏”级联菜单的“Visual Basic编辑器”选项即可进入。 使用Alt+F11组合键,可以方便地在数据库窗口的VBE之间进行切换。 考点三考点三 VBAVBA程序设计基础程序设计基础2、VBA编

21、程环境:编程环境:VBE界面界面(1)VBE窗口 VBE窗口主要有标准工具栏标准工具栏、工程窗口工程窗口、属性窗口属性窗口和代码窗口代码窗口组成。 标准工具栏 Access视图视图插入模块插入模块运行子模块运行子模块/用户窗体用户窗体中断中断运行运行终止运行终止运行/重新设置重新设置设设计计模模式式工程项目工程项目管理器管理器属属性性窗窗口口对象浏对象浏览器览器行列行列考点三考点三 VBAVBA程序设计基础程序设计基础工程窗口 又称工程项目管理器工程项目管理器。在其中的列表框当中列出了应用程序的所有模块文件。单击“查看代码”按钮可以打开相应代码窗口,单击“查看对象”按钮可以打开相应对象窗口,单

22、击“切换文件夹”按钮可以隐藏或显示对象分类文件夹。 双击工程窗口上的一个模块或类,相应的代码窗口就会显示出来。考点三考点三 VBAVBA程序设计基础程序设计基础代码窗口 由对象组合框、事件组合框和代码编辑区组成。考点三考点三 VBAVBA程序设计基础程序设计基础属性窗口 属性窗口列出了所选对象的各个属性,分“按字母序”和“按分类序”两种查看形式。可以直接在属性窗口中编辑对象的属性,这属于对象属性的“静态”设置方法;可以在代码窗口内用VBA代码编辑对象的属性,这属于对象属性的“动态”设置方法。 考点三考点三 VBAVBA程序设计基础程序设计基础立即窗口立即窗口是用来进行快速的表达式计算、简单方法

23、的操作及进行程序测试的工作窗口。 在代码窗口内编写代码时,要在立即窗口打印变量或表达式的值,可使用Debug.Print语句。?sqr(9)3 .909297426825682 ?sin(2)考点三考点三 VBAVBA程序设计基础程序设计基础2、VBA编程环境:编程环境:VBE界面界面 (2)进入VBE编程环境 Access模块分成类模块和标准模块两种,它们进入VBE编程环境的方式也有所不同。 对于类模块类模块,可以直接定位到窗体或报表上,然后单击工具栏上的“代码代码”工具钮进入;或定位到窗体、报表和控件上通过指定对象事件对象事件处理过程进入。考点三考点三 VBAVBA程序设计基础程序设计基础

24、通过指定对象事件处理过程进入。方法有两种: 一是单击属性窗体的“事件”选项卡,选中某个事件并设置属性为“(事件过程)”选项,再单击属性栏右侧的“”按钮即可进入。 二是单击属性窗体的“事件”选项卡,选中某个事件直接单击属性栏右侧的“”按钮,“选择生成器”对话框,选择其中的“代码生成器”,单“确定”按钮即可进入。考点三考点三 VBAVBA程序设计基础程序设计基础对于标准模块标准模块,有三种进入方法: 一是对于已存在的标准模块,只需从数据库窗体对象列表上选择“模块”,双击要查看的模块对象即可进入。 二是要创建新的标准模块,需从数据库窗体对象列表上选择“模块”,单击工具栏上“新建”按钮即可进入。 三是

25、在数据库对象窗体中,单级“工具”菜单中“宏”级联菜单的“Visual Basic编辑器”选项即可进入。 使用Alt+F11组合键,可以方便地在数据库窗口的VBE之间进行切换。 考点三考点三 VBAVBA程序设计基础程序设计基础(3)VBE环境中编写VBA代码 Access的VBE编辑环境提供了完整的开发和开发和调试工具调试工具。其中的代码窗口顶部包含两个组合框,左侧为对象列表,右侧为过程列表。操作时,从左侧组合框选定一个对象后,右侧过程组合框中会列出该对象的所有事件过程,再从该对象事件过程列表选项中选择某个事件名称,系统会自动生成相应的事件过程模板,用户添加代码即可。 双击工程窗口中任何类或对

26、象都可以在代码窗口中打开相应代码并进行编辑处理。 考点三考点三 VBAVBA程序设计基础程序设计基础在代码窗口使用时,提供了一些便利的功能,主要有: 对象浏览器对象浏览器 使用对象浏览器工具可以快速对所操作对象的属性及方法进行检索。 快速访问子过程快速访问子过程 利用代码窗口顶部右边的“过程”组合框可以快速定位到所需的子过程位置。 考点三考点三 VBAVBA程序设计基础程序设计基础自动显示提示信息自动显示提示信息 在代码窗口内输入代码时,系统会自动显示关键字列表、关键字属性列表及过程参数列表等提示信息。 例例8.1 新建窗体并在其上放置一个命令按钮,然后创建该命令按钮的“单击”事件响应过程。考

27、点三考点三 VBAVBA程序设计基础程序设计基础(4)程序语句书写原则 语句书写规定语句书写规定 通常将一个语句写在一行。语句较长,一行写不下时,可以用续行符(_)将语句连续写在下一行。 可以使用冒号(:)将几个语句分隔写在一行中。 当输入一行语句并按下回车键后,如果该行代码以红公的文本显示(有时伴有错误信息出现),则表明该行语句存在错误应更正。 考点三考点三 VBAVBA程序设计基础程序设计基础注释语句注释语句 一个好的程序一般都有注释语句。这对程序的维护有很大的好处。 在VBA程序中,注释可以通过以下两种方式实现: 使用Rem语句 使用格式为:Rem注释语句 用单引号“”使用格式为:注释语

28、句 注释可以添加到程序模块的任何位置,并且默认以绿色文本显示。 考点三考点三 VBAVBA程序设计基础程序设计基础例例8.2 定义变量并赋值Rem 定义两个变量Dim Str1, Str2Str1=“Beijing” : Rem 注释在语句之后要用冒号隔开Str2=“Shanghai” 这也是一条注释考点三考点三 VBAVBA程序设计基础程序设计基础采用缩进格式书写程序采用缩进格式书写程序采取正确的缩进格式可以显示出流程中的结构。也可以利用“编辑”菜单下的“缩进”或“凸出”命令设置F1帮助信息帮助信息 可以将光标停留在某个语句命令上并按下F1键,系统会立刻提供相关命令的帮助信息。考点三考点三

29、VBAVBA程序设计基础程序设计基础3、数据类型和数据对象、数据类型和数据对象(1)标准数据类型Access数据库系统创建表对象时所涉及到的字段数据类型(除了OLE对象和备注数据类型外),在VBA中都有相对应的数据类型。 考点三考点三 VBAVBA程序设计基础程序设计基础VBA之外,还可以使用类型说明字节、整数、长整数、自动编号、单精度数和双精度数等常量和变量与Access的其他对象进行数据交换时,必须符合数据表、查询、窗体和报表中相应的字段属性。VBA数据类型列表数据类型数据类型类型标识类型标识符号符号字符类型字符类型整数Integer%字节/整数/是/否长整数Long&长整数/自动

30、编号单精度数Single!单精度数双精度数Double#双精读数货币Currency货币字符串String$文本布尔型Boolean逻辑值日期型Date日期/时间变体类型Variant任何考点三考点三 VBAVBA程序设计基础程序设计基础关于表中所列数据类型的使用,说明如下: 布尔型数据(Boolean) 布尔型数据只有两个值:True和False。布尔型数据转换为其他类型数据时,True转换为-1,False转换为0;其他类型数据转换为布尔型数据时,0转换为False,其他值转换为True。 考点三考点三 VBAVBA程序设计基础程序设计基础关于表中所列数据类型的使用,说明如下: 日期型和数

31、据(Date) 任何可以识别的文本日期数据都可以赋给日期变量。“时间/日期”类型数据必须前后用“#”号括住。 考点三考点三 VBAVBA程序设计基础程序设计基础变体类型(Variant) 变体类型是一种特殊的数据类型,除了定长字符串类型及用户自定义类型外,可以包含其他任何类型的数据;变体类型还可以包含Empty、Error、Nothing和Null特殊值。使用时,可以用VarType与TypeName两个函数来检查Variant中的数据。 考点三考点三 VBAVBA程序设计基础程序设计基础如果显式用DimAs Data Type声明变量,可以不用类型声明字符了,这将在后面说明。VBA中规定,如

32、果没有如果没有显式声明或使用符号来定义变量的数据显式声明或使用符号来定义变量的数据类型,默认为变体类型类型,默认为变体类型(Variant)。 数据库对象,如数据库、表、查询、窗体和报表等,也有对应的VBA对象数据类型,这些对象数据类型由引用的对象库所定义。 考点三考点三 VBAVBA程序设计基础程序设计基础(2)用户定义的数据类型 应用过程中可以建立包含一个或多个VBA标准数据类型的数据类型,这就是用户定义数据类型。它不仅包含VBA的标准数据类型,还包含其他用户定义数据类型。考点三考点三 VBAVBA程序设计基础程序设计基础用户定义数据类型可以在TypeEnd Type关键字间定义,定义格式

33、如下: Type数据类型名数据类型名 域名域名As数据类型数据类型 域名域名As数据类型数据类型 End Type 考点三考点三 VBAVBA程序设计基础程序设计基础例例8.3 定义一个学生信息数据类型Type NewStudenttxtNo as string*7txtName as stringtxtSex as string*1txtAge as integerEnd Type考点三考点三 VBAVBA程序设计基础程序设计基础Dim NewStud as NewStudentNewStud.txtNo=“980306”NewStud.txtName=“冯伟”NewStud.txtSex=

34、“女”NewStud.txtAge=20考点三考点三 VBAVBA程序设计基础程序设计基础Dim NewStud as NewStudentWith NewStud.txtNo=“980306”.txtName=“冯伟”.txtSex=“女”.txtAge=20End With考点三考点三 VBAVBA程序设计基础程序设计基础(3)数据库对象 数据库、表、查询、窗体、报表等也有对应的VBA对象数据类型,这些对象数据类型由引用的对象库所定义,常用的VBA对象数据类型和对象库中的所包括的对象见教材208页表8.3。 考点三考点三 VBAVBA程序设计基础程序设计基础4.变量与常量变量与常量变量变量

35、是指程序运行时值会发生变化的数据。变量名的命名,同字段命名一样,但变量命变量命名名不能包含有空格或除了下划线字符(_)外的任何其他的标点符号。 此外,变量命名不能使用不能使用VBA的关键字的关键字。VBA中的变量命名通常采用大写与小写字母相结合的,以使其更具可读性。需要指南的是,在VBA里变量命名大小写不“敏感”,即“NewVar”和“newvar”代表的是同一个变量。 考点三考点三 VBAVBA程序设计基础程序设计基础变量的声明编程时,根据变量直接定义与否,可以将变量划分为下面两种形式: 1)隐含型变量隐含型变量 没有直接定义,借助将一个值指定给变量名的方式来建立变量。 当在变量名称后没有附

36、加类型说明字符来指明隐含变量的数据类型时,默认为Variant数据类型。 当只处理整数数据时,将变量定义为整数或长整数类型可以加速程序代码的操作,因为计算单精度和双精度浮点值效率较低。 Dim m,nNewVar=528考点三考点三 VBAVBA程序设计基础程序设计基础2)显式变量显式变量 变量先定义后使用是较好的程序设计习惯。 定义变量最常用的方法是使用DimASVarType结构,其中,As后指明数据类型。这种方式是显式定义变量。 如果没有As Integer部分,New Var将默认指定为Variant数据类型。 Dim NewVar_1 as IntegerDim NewVar_2%,

37、sum!考点三考点三 VBAVBA程序设计基础程序设计基础强制声明可以在模志设计窗口的顶部说明区域中,加入Option Explict语句来强制要求所有变量必须定义才能使用。此外,变量命名时大小写字符的顺序,程序中系统均会按原始定义的大小写顺序表示,这样既方便输入程序代码,又提高了变量的可读性。 考点三考点三 VBAVBA程序设计基础程序设计基础变量的作用域在VBA编程中,变量定义的位置和方式不同,则它存在的时间和起作用的范围也有所不同,这就是变量的作用域与生命周期。 当变量出现时,它被称作是可见的,即可以为变量指定数值,改变它的值,并将它用于表达式中。在某些状况下,变量是不可见的。此时,如果

38、使用该变量就可能导致错误。 考点三考点三 VBAVBA程序设计基础程序设计基础下面列出了Visual Basic中变量作用域的3个层次: 1)局部范围局部范围 变量定义在模块的过程内部,过程代码执行时才可见。在子过程或函数过程中定义的或不用DimAs关键字定义而直接使用的变量作用范围都是局部的。 考点三考点三 VBAVBA程序设计基础程序设计基础2)模块范围模块范围 变量定义在模块的所有过程之外的起始位置,运行时在模块所包含的所有子过程和函数过程中可见。在模块的变量定义区域,用DimAs关键字定义的变量就是模块范围的。 考点三考点三 VBAVBA程序设计基础程序设计基础3)全局范围全局范围 变

39、量定义在标准模块的所有过程之外的起始位置,运行时在所有类模块和标准模块的所有子过程与函数过程中都可见。在标准模块的变量定义区域,用PublicAs关键字说明的变量就属于全局的范围。 考点三考点三 VBAVBA程序设计基础程序设计基础变量还有一个特性,称为持续时间或生命周生命周期期。变量的持续时间是从变量定义语句所在的过程第一次运行到程序代码执行完毕并将控制权交回调用它的过程为止的时间。每次子过程或函数过程被调用时,以DimAs语句说明的局部变量,会被为默认值,数值数据类型为0,字符串变量则为空字符串(“”)。这些局部变量,有着与子过程或函数过程等长的持续时间。 考点三考点三 VBAVBA程序设

40、计基础程序设计基础要在过程的实例间保留局部变量的值,可以用Static关键字代替Dim以定义静态变量。静态静态(Static)变量变量的持续时间是用整个模块执行的时间,但它的有效作用范围是由其定义位置决定的。 当用dim说明的局部变量不可见时,它们并不占用内存。在使用大量数组的情形下,局部变量的这一特征逝特别有利的。 考点三考点三 VBAVBA程序设计基础程序设计基础数据库对象变量Access中窗体引用格式:Forms!窗体名称!控件名称.属性名称Access中报表引用格式:Reports!报表名称!控件名称.属性名称考点三考点三 VBAVBA程序设计基础程序设计基础数据库对象变量例Forms

41、!学生管理!编号=“980306”Forms!学生管理!编 号=“980306”Dim txtName as controlSet txtName=Forms!学生管理!姓名txtName=“冯伟”考点三考点三 VBAVBA程序设计基础程序设计基础数组 数组是在有规则的结构中包含一种数据类型的一组数据,也称作数组元素变量。数组变量由变量名和数组下标构成,通常用Dim语句来定义数组,定义格式为: Dim数组名数组名(下标下限下标下限 to下标上限下标上限) 缺省情况下,下标下限为0,数组元素从“数组名(0)”至“数组名(下标上限)”;如果使用to选项,则可以安排非0下限。考点三考点三 VBAVB

42、A程序设计基础程序设计基础VBA也支持多维数组。可以在数组下标中加入多个数值,并以逗号分开,由此来建立多维数组,最多可以定义60维。下面定义了一个三维数组NewArray: Dim NewArray(5,5,5) As Integer 有6*6*6=216个元素 VBA还特别支持动态数组。定义和使用方法是:先用Dim显式定义数组但不能明数组元素数目,然后用ReDim关键字来决定数组包含的元素数目来定义数组,以建立动态数组。 考点三考点三 VBAVBA程序设计基础程序设计基础实际开发过程中,当预先不知道数组定义需要多少元素时,动态数组是很有用的。而且不再需要动态数组包含的元素时,可以使用ReDi

43、m将其设为0个元素,释放该数组占用的内存。 考点三考点三 VBAVBA程序设计基础程序设计基础数组的作用域和生命周期的规则和关键字的使用方法与传统变量的范围及持续时间的规则和关键字的用法相同。 可以在模块的说明区域加入Global或Dim语句,然后在程序中使用ReDim语句,以说明动态数组为全局的和模块级的范围。如果以Static取代Dim来说明数组的话,数组可在程序的示例间保留它的值。 考点三考点三 VBAVBA程序设计基础程序设计基础VBA中,在模块的声明部分使用“Option Base 0/1”语句,可以将数组的默认下标下限由0改为 1。考点三考点三 VBAVBA程序设计基础程序设计基础

44、变量标识命名法则 在编写VBA程序代码时,会用到大量的变量名称和不同的数据类型。对于控件对象,可以用VBA的Set关键字将每个命名的控件对象指定为一个变量名称。 Hungarian符号法符号法使用一组代表数据类型的码。用小写字母作为变量名的第一个字符。 用户定义数据类型的名称被称为产生的标签。在Hungarian符号法中,建立的标签是大写的。 考点三考点三 VBAVBA程序设计基础程序设计基础符号常量 在VBA编程过程中,对于一些使用频度较多的常量,可以用符号常量形式来表示。符号常量使用关键字Const来定义。 Const 符号常量名称符号常量名称=常量值常量值 这一符号常量会涵盖全局或模块级

45、的范围。 符号常量定义时不需要为常量指用数据类型,VBA会自动按存储效率最高的方式来确定其数据类型。符号常量一般要求大写命名,以便与变量区分。 Global Const PI=3.14159考点三考点三 VBAVBA程序设计基础程序设计基础系统常量 Access系统内部包含有若干个启动时就建立的系统常量,有True、False、Yes、No、Off、和Null等。编码时可以直接使用。 考点三考点三 VBAVBA程序设计基础程序设计基础可通过在“对象浏览器”窗口中,选择“工程/库”列表的Access项,再在“类”列表中选择“全局”选项,Access的内部常量就会列出。 在列表“成员”中选择一个常

46、量后,它的数值将出现在“对象浏览器”窗口的底部,能将这些内部常量的名字作为用户自定义常量或变量的名字。 考点三考点三 VBAVBA程序设计基础程序设计基础5.常用标准函数常用标准函数 在VBA中,除模块创建中可以定义子过程与函数过程完成特定功能外,又提供了近百个内置的标准函数,可以方便完成许多操作。 标准函数一般用于表达式中,有的能和语句一样使用。考点三考点三 VBAVBA程序设计基础程序设计基础其使用形式如下: 函数名函数名(参数参数1,参数,参数2,参,参数数3,参数,参数4,参数,参数5) 其中,函数名必不可少,函数的参数放在函数蔓后的圆括号中,参数可以是常量、变量或表达式,可以有一个或

47、多个,少数函数为无参函数。每个函数被调用时,都会返回一 考点三考点三 VBAVBA程序设计基础程序设计基础下面按分类介绍一些常用标准函数的使用。 数学函数 数学函数完成数学计算功能。主要包括以下函数: 绝对值函数Abs(表达式):返回数值表达式的绝对值。 取整函数Int(数值表达式):返回数值表达式的整数部分。 abs(3)=3abs(-5.2)=5.2int(3.1)=3int(3.8)=3int(-3.1)=-4int(-3.9)=-4考点三考点三 VBAVBA程序设计基础程序设计基础数学函数 Fix(数值表达式):返回数值表达式的整数部分。 参数为正值时,两者相同;参数为负值时,Int返

48、回小于等于参数值的第一个负数,而Fix返回大于等于参数值的第一个负数。 fix(3.1)=3fix(3.8)=3fix(-3.1)=-3fix(-3.9)=-3考点三考点三 VBAVBA程序设计基础程序设计基础数学函数 round(数值表达式,):按照指定的小数位数进行四舍五入的计算。 round(3.255,1)=3.3round(3.255,2)=3.26round(3.754,1)=3.8round(3.754,2)=3.75round(3.754,0)=4考点三考点三 VBAVBA程序设计基础程序设计基础数学函数 sqr(数值表达式):计算数值表达式的平方根 参数为正值时,两者相同;参

49、数为负值时,Int返回小于等于参数值的第一个负数,而Fix返回大于等于参数值的第一个负数。 sqr(9)=3考点三考点三 VBAVBA程序设计基础程序设计基础数学函数 rnd(数值表达式):产生一个01之间的随机数,为单精度类型rnd()01rnd()*1000100int(rnd()*100)0990100int(rnd()*101)0500int(rnd()*501)100500int(rnd()*401)+100-34 23int(rnd()*58)-34a bint(rnd()*(b-a+1)+a考点三考点三 VBAVBA程序设计基础程序设计基础字符串函数 字符串函数完成字符串处理功能

50、。主要包括以下函数: 字符串检索函数InStr(Start,Str1, ,Compare) 检索子字符串Str2在字符串Str1中最早出现的位置,返回一整型数。s1=“aabAbcabcdabcdeab”s2=“abc”a=instr(s1,s2)7a=instr(8,s1,s2)11a=instr(s1,s2,1)4考点三考点三 VBAVBA程序设计基础程序设计基础Start为可选参数,为数值式,设置检索的起始位置。如省略,从第一个字符开始检索;如包含Null值,发生错误。Compare也为可选参数,指定字符串比较的方法。值可以为1、2和0(缺省)。指定0(缺省)做二进制比较,指定1做不区分

51、大小写的文本比较,指定2做基于数据库中包含信息的比较。如值为Null,会发生错误。考点三考点三 VBAVBA程序设计基础程序设计基础如指定了Compare参数,则一定要有Start参数。 注意: 如果Str1的串长度为零,或Str2表示的串检索不到,则检索不到,则InStr返回返回0;如果Str2的串长度为零,InStr返回Start的值。 考点三考点三 VBAVBA程序设计基础程序设计基础字符串函数 字符串长度检测函数len(或) 返回字符串所含字符数。dim str as string*10dim istr=“123”i=12len1=len(“12345”)5len2=len(12)出错

52、len3=len(i)2len4=len(“考试中心”)4len5=len(str)10字符串截取函数 Left(字符串表达式,N):从字符串左边起截取N个字符。 Right(字符串表达式,N):从字符串右边起截取N个字符。 Mid(字符中表达式,N1,N2):从字符串左边第N1个字符起截取N2字符。 考点三考点三 VBAVBA程序设计基础程序设计基础s=“ good morning! ”str=left(s,3)“ go”str=right(s,5)“g! ”str=mid(s,4,5)“od mo”str=mid(s,1,3)str=mid(s,13,5)str=mid(s,len(s)-

53、m+1,m)考点三考点三 VBAVBA程序设计基础程序设计基础注意: 对于Left函数和Right函数,N值为0,返回零长度字符串;如果大于等于字符串的字符数,则返回整个字符串。对于Mid函数,如果N1值大于字符串的字符数,返回零长度字符串;如果省略N2,返回字符串中左边起N1个字符开始的所有字符。 考点三考点三 VBAVBA程序设计基础程序设计基础生成空格字符函数Space(数值表达式):返回数值表达式的值指定的空格字符数。 大小写转换函数Ucase(字符串表达式):将字符串中小写字母转成大写字母。 Lcase(字符串表达式):将字符串中大写字母转成小写字母。 s=space(0)“”s=s

54、pace(1)“ ”S=space(10)“ ”s1=“Hello!”s=ucase(s1)“HELLO!”s1=“Hello!”s=lcase(s1)“hello!”考点三考点三 VBAVBA程序设计基础程序设计基础删除空格函数LTrim(字符串表达式):删除字符串的开始空格。 RTrim(字符串表达式):删除字符串的属部空格。 Trim(字符串表达式):删除字符串的开始和尾部空格。s=“ good morning! ”str=trim(s)“good morning!”str=ltrim(s)“good morning! ”str=rtrim(s)“ good morning!”考点三考点

55、三 VBAVBA程序设计基础程序设计基础日期时间函数 日期时间函数的功能是处理日期和时间。主要包括以下函数: 获取系统日期和时间函数 date():返回当前系统日期。 time():返回当前系统时间。 now():返回当前系统日期和时间。 考点三考点三 VBAVBA程序设计基础程序设计基础截取日期分量函数year(表达式):返回日期表达式年份的整数。 month(表达式):返回日期表达式月份的整数。 day(表达式):返回日期表达式日期week(表达式):返回日期表达式日期的星期。考点三考点三 VBAVBA程序设计基础程序设计基础weekday(表达式,W:返回17的整数,表示星期几。 Wee

56、kday函数中,参数W为可选项,是一个指定一星期的第一天是星期几一星期的第一天是星期几的常数。如省略,默认为vbSunday,即周日返回1,周一返回2,依次类推。 weekday(date()weekday(date(),4)星期三是一周第一天考点三考点三 VBAVBA程序设计基础程序设计基础截取时间分量函数hour(表达式):返回时间表达式的小时数(023)。 minute(表达式):返回时间表达式的分钟数(059)。 second(表达式):返回时间表达式的秒数(059)。 日期/时间增加或减少一个时间间隔dateAdd(间隔类型,间隔值,表达式) 考点三考点三 VBAVBA程序设计基础程

57、序设计基础对表达式表示的日期按照间隔类型加上或减去指定的时间间隔值。 注意: 间隔类型参数表示时间间隔,为一个字符串,其设定值如表所示;间隔值参数表示时间间隔的数目,数值可以为正数(得到未来的日期)或负数(得到过去的日期)。 D=#2004-2-29 10:40:11#D1=dateadd(“yyyy”3,D)2007-2-28 10:40:11D2=dateadd(“q”,1,D)2004-5-29 10:40:11D2=dateadd(“m”,-2,D)2003-12-29 10:40:11D4=dateadd(“d”3,D)2004-3-3 10:40:11D5=dateadd(“ww”

58、,2,D)2004-3-14 10:40:11D6=dateadd(“n”,-150,D)2004-2-29 8:10:11考点三考点三 VBAVBA程序设计基础程序设计基础计算两个日期的间隔值函数DateDiff(间隔类型,日期,日期2,W1,W2) 返回日期1和日期2之间按照间隔类型所指定的时间间隔数目。 D1=#2003-5-28 20:8:36#D2=#2004-2-29 10:40:11#n1=datediff(“yyyy”,D1,D2)1n2=datediff(“q”,D1,D2)3n3=datediff(“m”,D2,D1)-9n4=datediff(“ww”,D1,D2)40n

59、5=datediff(“n”,D1,D2)398312考点三考点三 VBAVBA程序设计基础程序设计基础注意: 间隔类型参数表示时间间隔,为一个字符串,其设定值见表所示;参数W1为可选项,是一个指定一星期的第一天是星期几的常数,如省略,默认为vbSunday,即周日返回1、周一返回2,依次类推,其参数设定值见表所示;参数W2也为可选项,是一个指定一年的第一周的常数,如省略,默认值为vbFirstJan1,即包含1月1日的星期为第一周 。考点三考点三 VBAVBA程序设计基础程序设计基础返回包含指定年月日的日期函数DatePart(,W1,W2) 返回日期中按照间隔类型所指定的时间部分值。 D=

60、#2004-2-29 10:40:11#n1=DatePart(“yyyy”,D)2004n2=DatePart(“d”,D)29n3=DatePart(“ww”D)10考点三考点三 VBAVBA程序设计基础程序设计基础返回包含指定年月日的日期函数DateSerial(表达式1,表达式2,表达式3) 返回由表达式1值为年、表达式2值为月、表达式3值为日而组成的日期值。 注意注意:每个参数的取值范围应该是可接受的;即日的取值范围应在131之间,而月的取值范围应在112之间。此外,当任何一个参数的取值超出可接受的范围时,它会适时进位到下一个较大的时间单位。 D=DateSerial(2008,2,29)#

温馨提示

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

评论

0/150

提交评论