版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
模块
本章内容提要第1讲模块与VBA基础知识
1第2讲VBA程序设计2第3讲面向对象程序设计及VBA程序调试3第一讲模块与VBA基础知识
本讲主要教学内容12模块与VBA的基本知识VBA程序设计基础小结3学习目标1
了解模块与VBA的基本概念以及模块的类型特点。2
掌握模块的组成结构格式及创建方法。3
掌握VBA书写规则及常量、变量数组的基本知识。重点与难点
模块的概念与组成、模块的创建、VBA基础知识是本讲的重点。模块的概念与组成是本讲的难点。引言模块是用Access所提供的VBA(VisualBasicforApplication)语言编写的程序段。模块有两种基本类型:类模块和标准模块。模块中的每一个过程都可以是一个函数过程或一个子程序。模块可以与报表、窗体等对象结合使用,以建立完整的应用程序。本讲将学习模块有关的基础知识。
8.1模块与VBA
1、模块(Module):是Access系统中的一个重要对象,它是以VBA(VisualBasicforApplication)语言为基础编写的,以函数过程(Function)或子过程(Sub)为单元的集合方式存储的VBA程序。模块具有很强的通用性,窗体、报表等对象都可以调用模块内部的过程。
8.1.1模块简介在Access中,模块分为类模块和标准模块两种类型。模块基本上是由声明、语句和过程组成的集合,它们作为一个已命名的单元存储在一起,对VBA代码进行组织。
2、类模块
:包括窗体模块和报表模块,它们从属于各自的窗体或报表。窗体模块:
模块中包含在指定的窗体或其控件上事件发生时触发的事件过程的代码。报表模块:
模块中包含由在指定报表或其控件上发生的事件触发的事件过程的代码。作用范围限于所属窗体或报表内部,生命期也随窗体或报表的打开而开始、关闭而结束。类模块可以调用标准模块中定义好的过程。
8.1模块与VBA
3、标准模块:标准模块包含的是通用过程和常用过程,这些通用过程不与任何对象相关联,常用过程可以在数据库中的任何位置运行。标准模块中的公共变量和公共过程具有全局特性。作用范围在整个应用程序。生命期伴着应用程序运行而开始、关闭而结束。
8.1模块与VBA
8.1模块与VBA
模块以VBA语言为基础,由声明和过程两部分组成。过程是构成模块的基本单元,过程是VBA程序代码的容器,是程序中的若干逻辑部件,可分为Sub子过程和Function函数过程。8.1.2模块组成
1、Sub子过程
:子过程是由Sub和EndSub语句包含起来的VBA语句其格式如下:[Private|Public|Friend]Sub子过程名(参数列表)
<子过程语句>ExitSub<子过程语句>EndSub
该过程的调用方法是在该子过程之外用CALL显示调用,调用的具体方法为:
Callmysub(参数1,参数2,…)
。也可以直接引用过程名来调用该子过程。
8.1模块与VBA
2、函数过程
:函数过程是由Function和EndFunction语句包含起来的VBA语句,其格式如下:[Private|Public][Static]Function函数名(参数行)[As数据类型]<函数语句>ExitFunction<函数语句>EndFunction
函数过程不能使用Call来调用执行,而是直接引用函数过程名,如x=myFuntion(参数)将获得函数的值。
8.1模块与VBA
8.1模块与VBA
8.1.3模块创建
1、创建新模块方法一:打开数据库,单击数据库窗口左边对象列表中的“模块”选项;然后单击工具栏上的“新建按钮”;打开如右所示的“VisualBasic编辑器”,该视图中显示了模块设计视图且创建了空白标准模块。(1)创建标准模块方法二:单击“VisualBasic编辑器”菜单栏中“插入”按钮;在弹出的下拉列表中选择“模块”选项,会出现一个空白的标准模块。
8.1模块与VBA
方法:双击工程窗口中的窗体名称;然后在弹出的新建模块代码窗口中为各函数输入代码即可,如图8.2所示。(2)创建类模块——类模块分为与窗体报表相关的类模块和与窗体报表不相关的类模块。
创建与窗体或报表相关的类模块的过程如下:
8.1模块与VBA
方法:单击“数据库”窗口或“VisualBasic编辑器”的菜单栏上“插入”菜单;在弹出的下拉列表中选择“类模块”,即可在“VisualBasic编辑器”中看到一个空白的类模块;用户仅需将所需的声明或过程添加到类模块设计视图中保存即可。创建与窗体或报表相关的类模块的过程如下:
8.1模块与VBA
8.1.3模块创建
2、将宏转换为VBA代码方法:⑴选择数据库窗口中的宏对象;⑵单击菜单栏上的“工具”按钮,在弹出的下拉列表中选择“宏”命令,然后选择“将宏转换为VisualBasic代码”;⑶在弹出的“转换宏”对话框中,选择所需项,单击“转换”按钮即可。宏实质上也是由VBA代码构成,只是这些代码是Access自动生成的。宏有两种,一种是窗体或报表上的宏,另一种是全局宏。将窗体或报表上的宏转换为VBA代码的方法如下:
8.1模块与VBA
方法:⑴在“数据库”窗口中,单击左侧对象列表中的“宏”对象按钮,在宏对象列表框中选择要转换的宏名;⑵执行菜单命令“文件”→“另存为”,然后在“另存为”对话框中输入保存的文件名,在“保存类型”中选择“模块”,结束单击“确定”;⑶在弹出的“转换宏”对话框中,选择所需选项,单击“转换”按钮。将窗体或报表上的宏转换为VBA代码的方法如下:
8.2VBA程序设计基础
1、VBA的特点
:VBA(VisualBasicforapplication)是Access的开发语言,其语法与VisualBasic编程语言相互兼融,通过它可以像编写VB语言一样来编写VBA程序。8.2.1VBA简介⑶事件驱动。
Access事件是指操作Access的某个数据对象时发生的特定动作,该动作是对象可以识别的。⑵面向对象。VBA就是一种面向对象的程序设计语言,对象是VisualBasic程序设计语言的核心。⑴操作简单。Access为VBA提供了一个典型的Winows风格的集成开发环境——VBE。
8.2VBA程序设计基础
2、VBE界面
:VBE窗口包括窗口菜单、标准工具栏、工程窗口、属性窗口和代码窗口5部分,如图所示。
8.2VBA程序设计基础
3、VBA语句书规则:VBA语句书写规则属于软件工程的代码规范问题。代码规范的目的在于编写规格一致的代码,提高代码的可读性,使其易于修改和交流。⑵注意行的长度。通常一个语句写在一行,但一行最多允许255个字符,建议一行代码的最大长度不要超过80个字符;在VBA中,可以使用续行符“-”将长的代码行分为数行。⑴合理缩进。一般来说,代码的缩进应该为4个空格。一个过程的语句要比过程名称缩进4个空格,在循环,判断语句、With语句之后也要同样缩进。例如:IfstrText=""ThenNoZeroLengthString=NullElse
8.2VBA程序设计基础
⑶使用空行。空行没有必须遵守的规则,其使用的目的就是要显示程序的逻辑关系。如一个模块内部的过程之间要使用空行隔开,模块的变量定义和过程之间也应该空1行。⑸注意大小写。VBA源程序不分大小写,英文字母的大小写是等价的(字符串除外)。为了提高程序的可读性,VBA编译器对不同的程序部分都有默认的书写规则,例如,关键字默认首字母大写,其他字母小写。⑷书写注释。在VBA程序中,注释可以通过使用Rem语句或用“'”号实现。例如:Rem声明两个变量DimMyStr1,MyStr2AsStringMyStr1="Hello":RemMyStr1赋值为"Hello"MyStr2="World"'MyStr2MyStr1赋值为"World"
8.2VBA程序设计基础
1、数据类型
:VBA支持多种数据类型对数据进行操作。书上表8-2列出VBA程序中主要的数据类型,以及它们的存储要求和取值范围。其标准数据类型如下:8.2.2VBA基础知识类型类型符字段类型字节默认值Byte(单字节型)
无1
0Integer(整型)%字节/整数/是否2
0Long(长整型)&
长整型/自动编号4
0Single(单精度型)
!单精度数4
0Double(双精度型)#双精度数8
0Currency(货币型)
@货币8
0String(字符型)$文本
n*1
“”Boolean(布尔型)
无是/否2
FalseDate(日期型)无日期/时间8
0Variant(变体型)无任何按需分配
EmptyObject(对象型)无4
⑴标准数据类型要点:Boolean数据类型:值只能是True或是False。当转换其他的数值类型为Boolean值时,0会转成False,而其他的值则变成True。当转换Boolean值为其他的数据类型时,False成为0,而True成为-1。Date数据类型:日期须以数字符号(#)扩起来,例如,#2008-3-23#Variant数据类型:所有没被显式声明(用如Dim、Private、Public或Static等语句)为其他类型变量的数据类型。除了定长String数据及用户定义类型外,可以包含任何种类的数据。Variant也可以包含Empty、Error、Nothing及Null等特殊值。Object数据类型:利用Set语句,声明为Object的变量可以赋值为任何对象的引用。
8.2VBA程序设计基础
⑵数据类型-自定义类型在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。基本语法:
[Private|Public]Type类型名
元素名
As数据类型
[元素名
As数据类型
]……
EndType例:定义学生类型数据PublicTypeStudentsNameAsString*8AgeAsIntegerEndType
声明变量:
DimStudentAsStudents
引用数据:
Student.Name=”张三”
Student.Age=15
8.2VBA程序设计基础
8.2VBA程序设计基础
2、变量与常量:VBA代码中通过声明和使用指定的常量或变量来临时存储数值、计算结果或操作数据库中的任意对象。⑴变量
程序中的变量为临时存在单元,可存放文字、数值、日期和对象属性。每个变量都有一个名字,程序通过变量名对变量进行存取操作。用Dim语句显式声明变量
1、Dim变量名[AS类型]或Dim变量名[类型符]2、声明的每个变量都要一个单独的As类型子句,没有的作为变体类型(Variant)例1:DimiCountAsinteger,sumAssingle
等价于:DimiCount%,sum!
例2:DimiCountAsinteger,sum,nameasstring*10
则声明了三个变量,其中icount为整型,sum为变体型,name为长度为10的定长字符串模块与VBA
强制显式声明变量—OptionExplicit
良好的编程习惯都应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VBA中可以强制显式声明,在窗体模块、标准模块和类模块的通用声明段中加入:OptionExplicit
8.2VBA程序设计基础
8.2VBA程序设计基础
⑵常量在程序运行过程中,其值不能被改变的量称为常量。VBA中有三类常量:普通常量、符号常量、系统常量
。普通常量整型常量:10、110%(Integer)、23&(Long)实型常量:0.123!(Single)、-1.123#、1.25E+3、-1.25E-3字符串常量:“ABD”、“XYZ、”大家好”逻辑常量:ture、false日期常量:#2002-5-414:30:00PM#、#09/02/99#符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。关键字Const声明符号常量,基本语法如下:
Const常量名[As类型|类型符号]=常数表达式例如:
ConstPI#=3.1415926535
等价于
ConstPIAsDouble=3.1415926535
8.2VBA程序设计基础
系统常量VBA系统提供了应用程序和控件的系统定义常数。它们存放于系统的对象库中,在“对象浏览器”中能查看这些常数。颜色常数常数
值
描述
vbBlack0x0黑色
vbRed0xFF红色
vbGreen0xFF00绿色
vbYellow0xFFFF黄色
vbBlue0xFF0000蓝色
vbMagenta0xFF00FF紫红色
vbCyan0xFFFF00青色
vbWhite0xFFFFFF白色
星期常数常数
值
描述
vbSunday1星期日vbMonday2星期一
vbTuesday3星期二
vbWednesday4星期三
vbThursday5星期四
vbFriday6星期五
vbSaturday7星期六
3、变量的作用域和生命周期:VBA中,变量定义的位置和方式不同,则变量存在的时间和起作用的范围也有所不同,即变量的作用域与生命期。变量作用域的三个层次:⑴局部范围(过程级别):定义在模块的过程内部,只有在声明此变量的过程中才可使用定义方式:DimxAsSingleStaticyAssingle用Dim定义的局部变量只有在它所在的过程运行时才会有值Static定义的局部变量在整个程序运行期间均有值,所以它可以作为中间变量保存结果。⑵模块范围(Private):定义在模块的所有过程外部的起始位置,运行时在模块所包含的所有子过程和函数中可见。⑶全局范围(Public):定义在模块的所有过程外部的起始位置,运行时在所有类模块和标准模块的所包含的所有子过程和函数过程中都见。一般函数默认为Public
8.2VBA程序设计基础
变量的作用域和生命周期举例
x范围
z范围
y范围x全局变量y过程变量z过程静态变量
8.2VBA程序设计基础
4、数组:并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。⑴一维数组(线状)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年厦门市思明区街道办人员招聘考试试题及答案详解
- 2025年抚顺市顺城区中小学教师招聘笔试试题及答案详解
- 2026年云浮市云城区街道办人员招聘考试模拟试题及答案详解
- 2026年北京市宣武区法检系统书记员招聘考试模拟试题及答案详解
- 2026年大连市普兰店区消防救援局面向社会公开招聘政府专职消防员6人考试备考题库及答案详解
- 2026年郴州市苏仙区法检系统书记员招聘考试参考试题及答案详解
- 2026年伊春市金山屯区中小学教师招聘考试模拟试题及答案详解
- 2026年白城市洮北区中小学教师招聘笔试参考试题及答案详解
- 2025年毕节地区中小学教师招聘考试试题及答案详解
- 2026年黄石市下陆区中小学教师招聘考试备考题库及答案详解
- 化疗药物配伍及输注操作标准
- 物业项目成本控制及预算管理方案
- 2024年注册安全工程师考试化工(初级)安全生产实务试题及答案
- 单位食堂食材供应及配送服务(肉类)服务方案投标文件(技术方案)
- 农村企业经营管理课件
- 铝锭联营合同与合作协议
- T/CADBM 3-2018竹木纤维集成墙面
- 《气体中毒急诊救治》课件
- 水利工程土石方施工方案设计
- GB/Z 44071-2024液压传动连接软管总成操作规程
- 烧烤视频拍摄脚本
评论
0/150
提交评论