《模块与VBA编程基础.ppt》由会员分享,可在线阅读,更多相关《模块与VBA编程基础.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第8章章 模块与模块与VBA编程基础编程基础 模块的基本概念模块的基本概念 8.1创建模块创建模块8.2VBA程序设计基础程序设计基础8.3 VBA流程控制语句流程控制语句8.4 过程调用和参数传递过程调用和参数传递8.5 VBA程序的调试程序的调试8.7 VBA程序运行错误处理程序运行错误处理8.68.1 模块的基本概念模块的基本概念模块是模块是Access中一个重要的数据库对象,模块中可中一个重要的数据库对象,模块中可包含一个或多个过程。包含一个或多个过程。过程是由一系列过程是由一系列VBA代码组成的。它包含许多代码组成的。它包含许多VBA语句和方法,以执行特定的操作或计算数值。语句和方
2、法,以执行特定的操作或计算数值。简而言之,简而言之,模块是装着模块是装着VBA代码的容器。代码的容器。特点:特点:l模块比宏的功能更强大,运行速度更快,能直接运行模块比宏的功能更强大,运行速度更快,能直接运行Windows的其他程序。的其他程序。l使用模块可以建立用户自己的函数,完成复杂的计算、使用模块可以建立用户自己的函数,完成复杂的计算、执行宏所不能完成的任务。执行宏所不能完成的任务。l使用模块可以开发十分复杂的应用程序,使数据库系使用模块可以开发十分复杂的应用程序,使数据库系统功能更加完善。统功能更加完善。Access中,模块分为类模块和标准模块两种。中,模块分为类模块和标准模块两种。8
3、.1.1 标准模块标准模块标准模块一般用于存放供其他标准模块一般用于存放供其他Access数据库对象使用数据库对象使用的的公共过程。公共过程。标准模块通常安排一些公共变量或过程供类模块里的过标准模块通常安排一些公共变量或过程供类模块里的过程调用。在标准模块内部也可以定义私有变量和私有过程调用。在标准模块内部也可以定义私有变量和私有过程仅供本模块内部使用程仅供本模块内部使用特点特点:标准模块中的公共变量和公共过程具有:标准模块中的公共变量和公共过程具有全局特性全局特性,其作用在整个应用程序里,生命周期是伴随着应用程序其作用在整个应用程序里,生命周期是伴随着应用程序的运行而开始、关闭而结束。的运行
4、而开始、关闭而结束。创建方法:选择模块对象,然后单击新建按钮或插入菜创建方法:选择模块对象,然后单击新建按钮或插入菜单选择模块。单选择模块。8.1.2 类模块类模块类模块是以类的形式封装的模块,是面向对类模块是以类的形式封装的模块,是面向对象编程的单位。象编程的单位。类模块按照形式不同分为两大类:类模块按照形式不同分为两大类:l系统对象类模块系统对象类模块l用户定义类模块用户定义类模块系统对象类模块系统对象类模块窗体和报表都可以含有自己的事件代码和窗体和报表都可以含有自己的事件代码和处理模块,这些模块属于系统对象类模块。处理模块,这些模块属于系统对象类模块。进入相应的模块代码设计区域的方法:一
5、进入相应的模块代码设计区域的方法:一单击单击“代码代码”按钮;二是单击事件过程。按钮;二是单击事件过程。特点:类模块具有局部特性,其作用范围特点:类模块具有局部特性,其作用范围局限在所属窗体或报表内部,而生命周期局限在所属窗体或报表内部,而生命周期则是伴随着窗体或报表的打开而开始、关则是伴随着窗体或报表的打开而开始、关闭而结束。闭而结束。用户定义类模块创建方法:在模块对象下:单击”插入”|“类模块”8.2 创建模块创建模块创建模块就是创建过程创建模块就是创建过程过程是模块的单元组成,由过程是模块的单元组成,由VBA代码编写而成。代码编写而成。过程是一段可以实现某个具体功能的代码过程是一段可以实
6、现某个具体功能的代码过程分为两类:过程分为两类:Sub子过程和子过程和Function函数过程函数过程。一、在模块中加入过程:一、在模块中加入过程:创建方法:创建方法:打开窗体或报表的事件过程进入打开窗体或报表的事件过程进入选中单击模块对象,单击选中单击模块对象,单击“新建新建”一个模块包含一个声明区域,且可以包含一个或多个子一个模块包含一个声明区域,且可以包含一个或多个子过程或函数过程。过程或函数过程。模块的声明区域是用来声明模块使模块的声明区域是用来声明模块使模块的声明区域是用来声明模块使模块的声明区域是用来声明模块使用的变量等项目用的变量等项目用的变量等项目用的变量等项目。1、Sub过程
7、(子过程)无返回值。过程(子过程)无返回值。定义格式:定义格式:Sub 过程名过程名 程序代码程序代码 End Sub过程的调用:过程的调用:Call 过程名过程名Sub jc()Dim str1,str2,str3str1=beijing :Rem 给变量给变量str1赋值赋值str2=shanghai 给变量给变量str2赋值赋值str3=str1+str2Debug.Print str3End SubDebug.Print在立即在立即 窗口中显示结果窗口中显示结果:Rem Dim定义变量定义变量立即窗口的显示立即窗口的显示:视图视图|立即窗口立即窗口Public Sub name Pri
8、vate Sub namePublic 表示表示 Sub 过程可被所有过程可被所有 Script 中的所有其中的所有其他过程访问。他过程访问。Private 表示表示 Sub 过程只可被声明该过程的过程只可被声明该过程的 Script 中的其他过程访问。中的其他过程访问。Name Sub 的名称,遵循标准变量命名约定。的名称,遵循标准变量命名约定。Integer-数据类型数据类型Integer 字节或者整数字节或者整数。如果知道变量总是存放整数,。如果知道变量总是存放整数,则应该将其申明为则应该将其申明为Interger类型或类型或Long 类型。整数类型。整数的运算速度快,而且占用的内存少。
9、的运算速度快,而且占用的内存少。Dim(定义变量定义变量)方法为:方法为:Dim 变量变量 As 变量类型变量类型 2、Function过程(又称函数)有返回值过程(又称函数)有返回值定义格式:定义格式:Function 过程名过程名 AS(返回值)类型(返回值)类型 程序代码程序代码 END Function调用:直接用函数名调用调用:直接用函数名调用过程过程test的定义如下:的定义如下:Sub test()Dim n As Integer,k As Long n=InputBox(n=)Debug.Print jc(n)k=jc(n)+jc(n+2)调用函数调用函数jc Debug.Pr
10、int“n!+(n+2)!=;kEnd Sub函数函数jc的定义如下:的定义如下:Function jc(n As Integer)As Long 函数的返回值为函数的返回值为Long型型 Dim i As Integer,s As Long s=1 For i=1 To n s=s*i Next i jc=s 给函数赋值给函数赋值End Function二、在模块中执行宏二、在模块中执行宏在模块的过程定义中,使用在模块的过程定义中,使用Docmd对象对象的的RunMacro方法可以执行设计好的宏方法可以执行设计好的宏调用格式:调用格式:Docmd.RunMacro 宏名宏名,宏的运行,宏的运
11、行次数次数,数值表达式,数值表达式注意:宏名用双引号引起来注意:宏名用双引号引起来8.3 VBA程序设计基础程序设计基础VBA是是Microsoft Office内内置置的的编编程程语语言言,其其语语法法与与VB语语言言兼兼容容。不不是是一一个个独独立立的的开开发发工工具具,一一般般被被嵌嵌入入到到像像Word、Excel、Access这这样样的宿主软件中,与其配套使用的宿主软件中,与其配套使用VBA采用了面向对象的程序设计方法。采用了面向对象的程序设计方法。8.3.1、程序语句书写原则、程序语句书写原则1、语句书写规则、语句书写规则通常一个语句写在一行,语句较长一行写不下时,可以通常一个语句
12、写在一行,语句较长一行写不下时,可以用用续行符(续行符(_)将语句连续写在下一行将语句连续写在下一行可以使用可以使用冒号冒号将几个语句分隔写在一行中将几个语句分隔写在一行中 例如模块例如模块2当输入一行语句并按下回车键后,代码以当输入一行语句并按下回车键后,代码以红色文本显示红色文本显示表明该语句存在错误表明该语句存在错误2、注释语句、注释语句两种方式:两种方式::Rem 注释语句注释语句注释语句注释语句注释默认注释默认以绿色文本显示以绿色文本显示。还可以利用还可以利用“编辑编辑”工具栏中的工具栏中的“设置注释块设置注释块”按钮和按钮和“解除注释块解除注释块”按钮对大块代码进行注释或解除注释按
13、钮对大块代码进行注释或解除注释例题:定义变量例题:定义变量,赋值并添加注释赋值并添加注释Sub ab()Dim str1,str2str1=“shanghai“:Rem 为变量为变量str1赋值赋值str2=shi bo hui 为变量为变量str2赋值赋值Debug.Print str1+str2End Sub3、采用缩进格式书写程序、采用缩进格式书写程序显示出流程中的结构显示出流程中的结构 也可以利用编辑也可以利用编辑缩进或凸出缩进或凸出8.3.2 面向对象程序设计的概念面向对象程序设计的概念1对象和集合对象和集合对象:对象:在采用面向对象程序设计方法的程序中,程序处理在采用面向对象程序设
14、计方法的程序中,程序处理的目标被抽象成了一个个对象,的目标被抽象成了一个个对象,每个对象具有各自的属每个对象具有各自的属性、方法和事件性、方法和事件。一个对象就是一个实体一个对象就是一个实体。对象的方法。对象的方法就是对象的可以执行的行为,一个对象都有多种方法。就是对象的可以执行的行为,一个对象都有多种方法。对象集合:对象集合:Access数据库窗口左侧的数据库窗口左侧的7类对象列表形成对类对象列表形成对象类。象类。7类对象。类对象。集合表示的是某类对象所包含的实例构成集合表示的是某类对象所包含的实例构成 Access中除了数据库的中除了数据库的7类个对象外,还提供一个重要类个对象外,还提供一
15、个重要的对象:的对象:DoCmd。主要功能是通过调用包含在内部的。主要功能是通过调用包含在内部的方法实现方法实现VBA编辑中对编辑中对Access的操作。的操作。属性和方法描述了对象的性质和行为属性和方法描述了对象的性质和行为格式:对象格式:对象.属性或对象属性或对象.行为行为属性:属性:用来表示对象的状态,如窗体的用来表示对象的状态,如窗体的Name(名称)(名称)属性、属性、Caption(标题)属性等。(标题)属性等。如:如:Label1.caption方法:方法:用来描述对象的行为,如窗体有用来描述对象的行为,如窗体有Refresh方法,方法,例如,利用例如,利用Docmd对象的方法可
16、以打开报表对象的方法可以打开报表“教师教师信息信息”,其格式为,其格式为:Docmd.OpenReport“教师教师信息信息”Debug对象有对象有Print方法等。方法等。Debug对对象:象:该对该对象可在象可在调试阶调试阶段用段用Print方法在立方法在立即窗口即窗口输输出信息出信息 Debug.print2属性和方法属性和方法3事件和事件过程事件和事件过程 事件:事件:是对象可以识别的动作,通常由系统预先定是对象可以识别的动作,通常由系统预先定义义(附录附录E列出了列出了Access数据库对象的事件数据库对象的事件)事件过程:事件过程:对象在识别了所发生的事件后执行的程对象在识别了所发
17、生的事件后执行的程序序例如,下面的事件过程描述了单击按钮之后所发生的例如,下面的事件过程描述了单击按钮之后所发生的一系列动作。一系列动作。Private Sub Command1_Click()Command1.Caption=首都经济贸易大学首都经济贸易大学End Sub8.3.3 数据类型和数据库对象数据类型和数据库对象Access数据库系统创建表对象时所涉及的字段数据类型(除数据库系统创建表对象时所涉及的字段数据类型(除了了OLE对象和备注数据类型外),在对象和备注数据类型外),在VBA中都有数据类型中都有数据类型相对应相对应一、标准数据类型一、标准数据类型定义数据类型时定义数据类型时,
18、也可以用符号定义也可以用符号定义Dim a as single dim a!1、布尔型数据:、布尔型数据:两个值两个值True和和False。True=-1 False=02、日期型数据:、日期型数据:前后必须用前后必须用#号,如号,如#2012/11/233、变体类型数据:、变体类型数据:除定长字符串类型及用户自定义类型外,除定长字符串类型及用户自定义类型外,包含其他任何类型数据包含其他任何类型数据。VBA中规定,程序中如果没有显式声明或使用符号来定义变中规定,程序中如果没有显式声明或使用符号来定义变量的数据类型,则默认为变体类型量的数据类型,则默认为变体类型数据类型数据类型类型标识类型标识
19、符号符号 取值范围取值范围整数整数Integer%-32,768 32,767长整数长整数Long&-2,147,483,648 2,147,483,647单精度数单精度数Single!双精度数双精度数Double#货币货币Currency字符串字符串String$065500字符字符布尔型布尔型BooleanTrue 或或False日期型日期型Date100年年1月月1日日9999年年12月月31日日变体类型变体类型Variant无无二、用户自定义的数据类型二、用户自定义的数据类型在应用过程中利用在应用过程中利用VBA标准数据类型自己定义需要的多种数据标准数据类型自己定义需要的多种数据类型类
20、型格式:格式:Type 数据类型名数据类型名 As As End Type例:定义一个学生信息数据类型例:定义一个学生信息数据类型Type NewStudenttxtNo As String*7 学号,学号,7位定长字符串位定长字符串txtName As string 姓名,变长字符串姓名,变长字符串txtSex As String*1 性别,性别,1位定长字符串位定长字符串txtAge As Integer 年龄年龄,整型整型End Type当需要建立一个变量用来保存包含不同数据类型字段的数据表当需要建立一个变量用来保存包含不同数据类型字段的数据表的一条或多条记录时,用户自定义数据类型就特别
21、有用。的一条或多条记录时,用户自定义数据类型就特别有用。一般用户自定义数据类型使用时,首先要在模块区域中定义用一般用户自定义数据类型使用时,首先要在模块区域中定义用户数据类型,然后显式以户数据类型,然后显式以Dim,Public或或Static关键字来关键字来定义此用户类型变量定义此用户类型变量 用户定义类型变量的取值:变量名用户定义类型变量的取值:变量名.分量名分量名例:例:Dim NewStud as NewStudent NewStud.txtno=“980306”NewStud.txtName=“冯伟冯伟”NewStud.txtSex=“女女”NewStud.txtAge=20也可以使
22、用也可以使用With关键字简化一下程序中的重复部分。关键字简化一下程序中的重复部分。Dim NewStud as NewStudentWith NewStud .txtno=“980306”.txtName=“冯伟冯伟”.txtSex=“女女”.txtAge=20End With三、数据库对象(三、数据库对象(略)略)8.3.4变量与常量变量与常量变量是指程序运行时值会发生变化的数据变量是指程序运行时值会发生变化的数据。程序运。程序运行时行时,变量代表的就是内存中的某块临时存储空间变量代表的就是内存中的某块临时存储空间 1、变量的命名规则、变量的命名规则(1)以字母或汉字开头,后可跟字母、数字
23、或下划线。)以字母或汉字开头,后可跟字母、数字或下划线。(2)变量名最长为)变量名最长为255个字符。个字符。(3)不区分变量名的大小写)不区分变量名的大小写(4)不能包含空格)不能包含空格2、常量是指在程序中可以直接引用的实际值,其值在程序运、常量是指在程序中可以直接引用的实际值,其值在程序运行中不变。行中不变。VBA中有三种常量:直接常量、符号常量、系中有三种常量:直接常量、符号常量、系统常量。统常量。一变量的声明一变量的声明变量声明就是定义变量名称及类型,使系统为变量变量声明就是定义变量名称及类型,使系统为变量分配存储空间。一般,变量在使用前应该先声明分配存储空间。一般,变量在使用前应该
24、先声明。VBA声明变量有两种方法:声明变量有两种方法:显式声明显式声明 隐含声明隐含声明u显式声明:显式声明:格式为格式为 Dim 变量名变量名 AS 数据类型数据类型(或者字符或者字符)例如例如 Dim ab As integer,sum As single或或 Dim ab%,sum!u隐含声明隐含声明没有直接定义而通过一个值指定给变量名,或没有直接定义而通过一个值指定给变量名,或dim定义定义中省略了中省略了AS 数据类型,或在变量名称后没有附加类型说数据类型,或在变量名称后没有附加类型说明字符来指明隐含变量的数据类型时,默认为明字符来指明隐含变量的数据类型时,默认为Variant数据类
25、型。数据类型。例如:例如:Dim m,n m,n为变体变量为变体变量 ab=123 ab为变体变量,值是为变体变量,值是123 建议在程序中显式声明变量建议在程序中显式声明变量二、强制声明二、强制声明在默认情况下,在默认情况下,VBA允许在代码中使用未声明的变量,允许在代码中使用未声明的变量,如果在模块设计窗口的顶部如果在模块设计窗口的顶部“通用通用-声明声明”区域中,加区域中,加入语句:入语句:Option Explicit强制要求所有变量必须定义才能使用。强制要求所有变量必须定义才能使用。这种方法这种方法只为当前模块设置了自动变量声明功能。只为当前模块设置了自动变量声明功能。如果想为所有模
26、块都启用此功能,如果想为所有模块都启用此功能,“工具工具”菜单菜单“选选项项”对话框,在对话框,在“编辑器编辑器”选项卡中选中选项卡中选中“要求变量要求变量声明声明”选项即可。选项即可。三、变量的作用域三、变量的作用域VBA编程中,变量定义的位置和方式不同,则它存在的时间和编程中,变量定义的位置和方式不同,则它存在的时间和起作用的范围也有所不同。这就是起作用的范围也有所不同。这就是变量的生命周期变量的生命周期和和作用域。作用域。VBA中变量的作用域有中变量的作用域有3个层次:个层次:1、局部范围:变量定义在模块的过程内部、局部范围:变量定义在模块的过程内部在子过程或函数内部使用在子过程或函数内
27、部使用Dim、Static(静态)(静态)As关键字关键字说明的变量就是局部范围的。说明的变量就是局部范围的。2、模块范围:变量定义在模块的所有过程之外的起始位置、模块范围:变量定义在模块的所有过程之外的起始位置在模块的通用说明区,用在模块的通用说明区,用Dim、Static、private(私有)(私有)As关键自定义的变量作用域都是模块范围。关键自定义的变量作用域都是模块范围。3、全局范围、全局范围:定义在标准模块的所有过程之外的起始位置定义在标准模块的所有过程之外的起始位置,作用范围所有类模块和标准模块的所有子过程与函数过程。作用范围所有类模块和标准模块的所有子过程与函数过程。在标准模块
28、的变量定义区域,用在标准模块的变量定义区域,用PublicAs关键字说明关键字说明四、数据库对象变量四、数据库对象变量Access建立的数据库对象及其属性均可被看成是建立的数据库对象及其属性均可被看成是VBA程序代码中的变量及其指定的值来加以引用。程序代码中的变量及其指定的值来加以引用。引用格式:引用格式:Forms!窗体名称!控件名称窗体名称!控件名称.属性名称属性名称或或Reports!报表名称!控件名称报表名称!控件名称.属性名称属性名称如果对象名称中含有空格或标点符号,就要用方括号把名称括如果对象名称中含有空格或标点符号,就要用方括号把名称括起来。起来。例如:例如:forms!系统登录
29、系统登录!用户名用户名=“cueb”forms!系统登录系统登录!用用 户名户名=“cueb”此外还可以用此外还可以用Set关键字来建立控件对象的变量关键字来建立控件对象的变量。当需要多次。当需要多次引用对象时,这种方法很方便。引用对象时,这种方法很方便。例如:例如:Dim txtName as control 定义控件类型变量定义控件类型变量Set txtname=Forms!窗体名称窗体名称!控件名称控件名称.属性名称属性名称txtName=“冯伟冯伟”五、数组五、数组问题:求问题:求10个成绩的平均值,并对它们按个成绩的平均值,并对它们按照从大到小排序,这照从大到小排序,这10个数怎么组
30、织?个数怎么组织?如果在程序中要对如果在程序中要对一组数据进行处理,通一组数据进行处理,通常的解决方法是将这组常的解决方法是将这组数放在数组中。数放在数组中。放在放在10个变量中?个变量中?放在一个数组中?放在一个数组中?数组是一组相同数据类型的数据的集合数组是一组相同数据类型的数据的集合 1一维数组的定义一维数组的定义 使用数组使用数组必须必须先定义数组,格式为先定义数组,格式为Dim 数组名数组名(to)As 例如,例如,dim score(1 to 10)as Integer定义了一个有定义了一个有10个元素的整型数组,所有数组元素具有同一个个元素的整型数组,所有数组元素具有同一个标识即
31、数组名,标识即数组名,数组名后括号内的序号称为数组元素的下标。数组名后括号内的序号称为数组元素的下标。(1)所有数组元素在内存连续存放)所有数组元素在内存连续存放(2)根据下标区分数组元素)根据下标区分数组元素Score(1)score(2)score(3)score(9)Score(10)关于数组的定义,还有下面的说明。关于数组的定义,还有下面的说明。(1)定义数组时数组名的命名规则与变量名的命名规则相同)定义数组时数组名的命名规则与变量名的命名规则相同(2)一般在定义数组时应给出数组下标的上限和下限。但也)一般在定义数组时应给出数组下标的上限和下限。但也可以省略下限,可以省略下限,缺省为缺
32、省为0。例如,例如,Dim a(10)As Single默认情况下,数组默认情况下,数组a由由11个元素组成。个元素组成。若希望下标从若希望下标从1开始,可在模块的通用声明段使用开始,可在模块的通用声明段使用Option Base语句声明。其使用格式为语句声明。其使用格式为 Option Base 1 (3)和和不能使用变量,必须是常量,不能使用变量,必须是常量,常量可常量可以是字面常量或符号常量,一般是整型常量。以是字面常量或符号常量,一般是整型常量。(4)如果省略)如果省略As子句,则数组的类型为子句,则数组的类型为Varient变体类型。变体类型。2二维数组的定义二维数组的定义 格式为格
33、式为Dim 数组名数组名(to,to)As 例如,例如,Dim c(1 To 3,1 To 4)As Singlec(1,1)c(1,2)c(1,3)c(1,4)c(2,1)c(2,2)c(2,3)c(2,4)c(3,1)c(3,2)c(3,3)c(3,4)3、动态数组、动态数组当预先不知道数组定义需要多少元素时,可当预先不知道数组定义需要多少元素时,可以把数组定义为动态数组以把数组定义为动态数组定义和使用方法:先用定义和使用方法:先用dim显式定义数组显式定义数组但不指明数组元素数目,然后用但不指明数组元素数目,然后用Redim关键字来决定数组中包含的元素数。关键字来决定数组中包含的元素数。
34、例:例:dim newarray()as long Redim newarray(9,9,9)六、变量标识符命名法则六、变量标识符命名法则对于控件对象定义变量时,可以用小写字母对于控件对象定义变量时,可以用小写字母作为变量名的前缀。例如:文本框用作为变量名的前缀。例如:文本框用txt,定义一个文本框变量名为,定义一个文本框变量名为txtName表表8.4例出了最常用变量标识符的前缀。例出了最常用变量标识符的前缀。为了易于记忆变量名为了易于记忆变量名 p212七、符号常量(固定不变的值)七、符号常量(固定不变的值)如果程序中多处用到某个常量,将其定义成符号常量如果程序中多处用到某个常量,将其定义
35、成符号常量可增加代码的可读性,也便于维护。可增加代码的可读性,也便于维护。用关键字用关键字Const定义符号常量:定义符号常量:格式:格式:Const 符号常量名称符号常量名称=常量值常量值 Const PI=3.1415926符号常量一般需要大写符号常量一般需要大写,以便与变量区分以便与变量区分在定义符号常量时,如果前面加上在定义符号常量时,如果前面加上Global或或Public关键字,这一符号常量会涵盖全局或模块级别范围。关键字,这一符号常量会涵盖全局或模块级别范围。例如:例如:Global Const PI=3.1415926八、系统常量八、系统常量True False Yes No
36、On Off Null等等单击单击“视图视图”菜单菜单选择选择“对象浏览对象浏览器器”就可以查看就可以查看Access、VBA等对象库等对象库中提供的常量。中提供的常量。8.3.5 常用标准函数常用标准函数VBA提供了大量的内置函数,这些函数极大地丰富了提供了大量的内置函数,这些函数极大地丰富了VBA的功能的功能 了解和使用函数了解和使用函数,应从下面三个方面应从下面三个方面:函数名函数名参数参数(指参数的个数、顺序和类型指参数的个数、顺序和类型)函数值(每个函数被调用时都会有一个返回值)函数值(每个函数被调用时都会有一个返回值)常用函数的使用可以参照附录常用函数的使用可以参照附录A学习学习下
37、面介绍一些常用函数下面介绍一些常用函数一、算术函数(完成数学计算功能)一、算术函数(完成数学计算功能)1、绝对值函数:、绝对值函数:Abs()返回数值表达式的绝对值。如返回数值表达式的绝对值。如Abs(-3)=32、向下取整函数:、向下取整函数:Int()向下取整数的结果,参数为负值时返回小于等于向下取整数的结果,参数为负值时返回小于等于参数值的第一个负数。只取整数部分,不考虑参数值的第一个负数。只取整数部分,不考虑四舍五入四舍五入3、取整函数:、取整函数:Fix()参数为正数时与参数为正数时与Int结果一样,参数为负数时返回结果一样,参数为负数时返回大于等参数值的第一个负数大于等参数值的第一
38、个负数例:例:Int(-3.25)=-4 Fix(-3.25)=-34、四舍五入函数:、四舍五入函数:Round(,)按照指定的小数进行四舍五入。按照指定的小数进行四舍五入。就是用就是用来指定小数位数的。来指定小数位数的。例:例:Round(3.255,1)=3.35、开平方函数:、开平方函数:Sqr()Sqr(9)=36、产生随机数函数:、产生随机数函数:Rnd()数值表达式:数值表达式:小于小于0,每次产生相同的随机数,每次产生相同的随机数大于大于0,每次产生新的随机数,每次产生新的随机数等于等于0,产生最近生成的随机数,产生最近生成的随机数省略参数,默认为大于省略参数,默认为大于0二、字
39、符串函数二、字符串函数1、字符串检索函数:字符串检索函数:InStr(start,compare)检索子字符串检索子字符串str2在字符串在字符串str1中最早出现的位置,返回一中最早出现的位置,返回一整型数。整型数。Start为可选参数,为数值式,设置检索的起始位为可选参数,为数值式,设置检索的起始位置。如省略,从第一个字符开始检索。置。如省略,从第一个字符开始检索。Compare也为可选参数,指定字符串的比较方法。值可以也为可选参数,指定字符串的比较方法。值可以是是1、2和和0(缺省)。(缺省)。0做二进制比较,做二进制比较,1不区分大小写的不区分大小写的文本比较,文本比较,2基于数据库中
40、包含信息的比较。基于数据库中包含信息的比较。例:例:str1=“98765”str2=“65”S=Instr(str1,str2)=4S=Instr(3,”aSsiAB”,”a”,1)=52、字符串长度检测函数:、字符串长度检测函数:Len(或或)返回字符串所含字符数。返回字符串所含字符数。注意:定长字符串,其长度是定义时的长度,和字符串实注意:定长字符串,其长度是定义时的长度,和字符串实际值无关。际值无关。例:例:dim str as string*10Dim I Str=“123”i=12Len1=Len(“12345”)=5Len2=Len(12)错误错误Len3=Len(i)=2Len
41、4=Len(“考试中心考试中心”)=4Len5=Len(str)=103、字符串截取函数、字符串截取函数Left right midMid(,N2):从字符:从字符串左边第串左边第N1个字符起截取个字符起截取N2个字符。缺省个字符。缺省N2截取所有字符。截取所有字符。4、生成空格字符函数:、生成空格字符函数:Space()返回数值表达式的值指定的空格字符数返回数值表达式的值指定的空格字符数5、大小写转换函数:、大小写转换函数:ucase:小写转换成大写小写转换成大写Lcase:大写转换成小写:大写转换成小写6、删除空格函数:、删除空格函数:LTrim():删除开始的空格:删除开始的空格RTri
42、m():删除尾部的空格:删除尾部的空格Trim():删除开始和尾部的空格:删除开始和尾部的空格三、日期三、日期/时间函数时间函数1、获取系统日期和时间函数、获取系统日期和时间函数Date()time()Now()2、截取日期分量函数、截取日期分量函数Year()Month()Day()Weekday()3、截取时间分量函数、截取时间分量函数 Hour()Minute()Second()4、日期、日期/时间增加或减少一个时间间隔时间增加或减少一个时间间隔DateAdd(,)对表达式表示的日期按照间隔类型加上或减去指定的时间对表达式表示的日期按照间隔类型加上或减去指定的时间间隔值。间隔值正数为加,
43、负数为减间隔值。间隔值正数为加,负数为减间隔类型参照间隔类型参照8.65、计算两个日期的间隔值函数、计算两个日期的间隔值函数DateDiff(,W1,W2)返回日期返回日期1和日期和日期2之间按照间隔类型所指定的时间间隔数目。之间按照间隔类型所指定的时间间隔数目。W1可选参数,指定一个星期的第一天是星期几的常数可选参数,指定一个星期的第一天是星期几的常数W2可选参数,指定一年的第一个周的常数(参照表可选参数,指定一年的第一个周的常数(参照表8.7)6、返回日期指定时间部分函数、返回日期指定时间部分函数DatePart(,W1,W2)返回日期中按照间隔类型所指定的时间部分值返回日期中按照间隔类型
44、所指定的时间部分值7、返回包含指定年月日的日期函数、返回包含指定年月日的日期函数DateSerial(表达式表达式1,表达式,表达式2,表达式,表达式3)返回由表达式返回由表达式1值为年,表达式值为年,表达式2值为月,表达式值为月,表达式3值为日而组值为日而组成的日期值。成的日期值。每个参数的取值范围应该是可接受的。当任何一个参数的取值超每个参数的取值范围应该是可接受的。当任何一个参数的取值超出可接受范围时,它会适时进位到下一个较大的时间单位。出可接受范围时,它会适时进位到下一个较大的时间单位。四、类型转换函数四、类型转换函数1、字符串转换字符代码函数:、字符串转换字符代码函数:Asc()返回
45、字符串首字符的返回字符串首字符的ASCII值。值。2、字符代码转换成字符函数:、字符代码转换成字符函数:Chr()返回与字符代码相关的字符。返回与字符代码相关的字符。3、数字转换成字符串函数:、数字转换成字符串函数:Str()将数值表达式转换成字符串。表达式值为正,返回的字符串包将数值表达式转换成字符串。表达式值为正,返回的字符串包含一前导空格表示有一正号含一前导空格表示有一正号4、字符串转换成数字函数:、字符串转换成数字函数:Val()将数字字符串转换成数值型数字。注意,数字串转换成自动将将数字字符串转换成数值型数字。注意,数字串转换成自动将字符串中的空格、制表符和换行符去掉,当遇到它不能识
46、别字符串中的空格、制表符和换行符去掉,当遇到它不能识别为数字的第一个字符时,停止读入字符串为数字的第一个字符时,停止读入字符串5、字符串转换日期日期函数:、字符串转换日期日期函数:DateValue()将字符串转换成日期值将字符串转换成日期值例:例:D=DateValue(“February 29,2004”),返回,返回#2004-2-29#6、Nz函数:函数:Nz(表达式或字段属性值(表达式或字段属性值,规定值规定值当一个表达式或字段属性值为当一个表达式或字段属性值为Null时,函数可返回时,函数可返回0、零长度、零长度字符串(字符串(”)或其他指定的值。)或其他指定的值。当缺省当缺省“规
47、定值规定值”时,如果表达式或字段属性值为数值型且值时,如果表达式或字段属性值为数值型且值为为Null,Nz函数返回函数返回0如果表达式或字段属性值为字符型且值为如果表达式或字段属性值为字符型且值为Null,Nz函数返回函数返回空字符串。空字符串。8.3.6 运算符和表达式运算符和表达式一、运算符(算术运算符、关系运算符、逻辑运算符和连接运算一、运算符(算术运算符、关系运算符、逻辑运算符和连接运算符)符)1、算术运算符、算术运算符乘幂(乘幂()、乘法()、乘法(*)、除法()、除法(/)、整数除法()、整数除法()求模运算(求模运算(Mod)、加法、减法。)、加法、减法。整数除法(整数除法():
48、对两个数做除法运算并返回一个整数):对两个数做除法运算并返回一个整数如果操作数有小数部分,舍去小数后再运算,如果结果有小数也如果操作数有小数部分,舍去小数后再运算,如果结果有小数也要舍去要舍去求模运算(求模运算(Mod):求余数):求余数如果操作数是小数,四舍五入变成整数后再运算;余数的符号跟如果操作数是小数,四舍五入变成整数后再运算;余数的符号跟被除数相同。被除数相同。2、关系运算符、关系运算符=运算结果为运算结果为True或或False。进行算术运算时,。进行算术运算时,True当成当成-1False当成当成03、逻辑运算符、逻辑运算符And(与)(与)Or(或)(或)Not(非)(非)运
49、算结果为运算结果为True或或False4、连接运算符、连接运算符&和和+&:将两个表达式作字符串连接:将两个表达式作字符串连接例:例:”2+3”&”=”&(2+3)运算结果为运算结果为2+3=5+:将两个表达式均为字符串时,才将两个表达式:将两个表达式均为字符串时,才将两个表达式连接成一个新字符串。连接成一个新字符串。例:例:”2+3”&”=”+(2+3)出错出错二、表达式和优先级(参照表二、表达式和优先级(参照表8.9)p220一个语句就是能够完成某项操作的一条命令。一个语句就是能够完成某项操作的一条命令。VBA程序就是有大量语句构成的。程序就是有大量语句构成的。按照语句所执行的功能,按照
50、语句所执行的功能,VBA的程序语句有的程序语句有赋值语赋值语句、声明语句、控制语句、注释语句句、声明语句、控制语句、注释语句等。等。控制语句分三种结构是控制语句分三种结构是顺序结构、分支结构和循环结构顺序结构、分支结构和循环结构 顺序结构顺序结构是最简单的一种结构,按照语句的排列顺序依是最简单的一种结构,按照语句的排列顺序依次执行程序中的每一条语句。次执行程序中的每一条语句。分支结构分支结构又称选择结构,根据条件选择执行路径,需要又称选择结构,根据条件选择执行路径,需要使用条件语句使用条件语句循环结构循环结构:程序执行时,该语句中的一部分操作即循环:程序执行时,该语句中的一部分操作即循环体被重