第九章模块PPT讲稿.ppt
第九章模块第1页,共108页,编辑于2022年,星期二第第9 9章章 模块模块 模块的基本概念模块的基本概念 过程及模块分类过程及模块分类 VBA VBA 程序设计基础程序设计基础第2页,共108页,编辑于2022年,星期二 模块的基本概念模块的基本概念AccessAccess的表、查询、窗体、报表和数据访问页的表、查询、窗体、报表和数据访问页不能相互驱动和调用。使用模块和宏可以将数据库不能相互驱动和调用。使用模块和宏可以将数据库中所有对象联系起来、统一管理,形成完整的数据中所有对象联系起来、统一管理,形成完整的数据库系统。库系统。通过上一章对宏的学习,我们了解到可以利用通过上一章对宏的学习,我们了解到可以利用宏来执行一系列简单的操作。但是如果要对数据宏来执行一系列简单的操作。但是如果要对数据库对象进行更复杂、更灵活的控制,就需要通过库对象进行更复杂、更灵活的控制,就需要通过编程来实现。在编程来实现。在AccessAccess中,编程是通过模块对象中,编程是通过模块对象实现的。利用模块可以将各种数据库对象联结起实现的。利用模块可以将各种数据库对象联结起来,从而使其构成一个完整的系统。它的功能比来,从而使其构成一个完整的系统。它的功能比宏更强大,设计也更为灵活。宏更强大,设计也更为灵活。第3页,共108页,编辑于2022年,星期二模块的基本概念模块的基本概念模块是模块是AccessAccess的数据库中的一个重的数据库中的一个重要对象。要对象。模块是由模块是由VBAVBA(Visual Basic for Visual Basic for ApplicationsApplications)语言编写的程序的集合。)语言编写的程序的集合。是以函数过程(是以函数过程(FunctionFunction)或子过程)或子过程(SubSub)为单元的集合方式存储。)为单元的集合方式存储。第4页,共108页,编辑于2022年,星期二模块的分类模块的分类模块可分成两种基本类型:类模块和标模块可分成两种基本类型:类模块和标准模块。准模块。类模块类模块类模块是可以定义新对象的模块。新建一个类模块是可以定义新对象的模块。新建一个类模块,也就是创建了一个新对象。模块中定类模块,也就是创建了一个新对象。模块中定义的过程将变成该对象的属性或方法。义的过程将变成该对象的属性或方法。第5页,共108页,编辑于2022年,星期二AccessAccess中的类模块可以独立存在,中的类模块可以独立存在,也可以与窗体和报表同时出现。窗体也可以与窗体和报表同时出现。窗体和报表模块是类模块的典型例子。窗和报表模块是类模块的典型例子。窗体和报表模块通常都含有事件过程,体和报表模块通常都含有事件过程,该过程用于响应窗体或报表中的事件,该过程用于响应窗体或报表中的事件,可以使用事件过程来控制窗体或报表可以使用事件过程来控制窗体或报表的行为,以及它们对用户操作的响应。的行为,以及它们对用户操作的响应。第6页,共108页,编辑于2022年,星期二类模块:包含类的定义(属性和方法)类模块:包含类的定义(属性和方法)的模块。的模块。类模块有三种基本形式:窗体类模类模块有三种基本形式:窗体类模块、报表类模块和自定义类模块。块、报表类模块和自定义类模块。类模块也可脱离窗体或报表而单独类模块也可脱离窗体或报表而单独存在,这种类模块可在数据库窗口的存在,这种类模块可在数据库窗口的模块中显示。模块中显示。第7页,共108页,编辑于2022年,星期二 标准模块标准模块在整个数据库中,可用的函数模块和在整个数据库中,可用的函数模块和子程序称为标准模块。子程序称为标准模块。标准模块包含通用过程和常用过程。标准模块包含通用过程和常用过程。通用过程是不与任何对象相关联的过通用过程是不与任何对象相关联的过程。常用过程是可以在数据库任何地程。常用过程是可以在数据库任何地方执行的与其他对象无关的过程。方执行的与其他对象无关的过程。第8页,共108页,编辑于2022年,星期二 将宏转换为模块将宏转换为模块 在数据库窗口在数据库窗口宏对象下宏对象下选择宏选择宏选择选择“工具工具”菜单下菜单下“将宏转换为将宏转换为vb”vb”。第9页,共108页,编辑于2022年,星期二过程及模块分类过程及模块分类 (创建模块)创建模块)1.1.模块模块模块是由过程组成的,模块中的每一个过程模块是由过程组成的,模块中的每一个过程都可以由一个函数或一个子程序组成。都可以由一个函数或一个子程序组成。2.2.过程过程过程:将过程:将VBAVBA语言的声明和语句集合在一起,作语言的声明和语句集合在一起,作为一个命名单位的程序段(执行特定功能的语为一个命名单位的程序段(执行特定功能的语句块)。它包含许多语句和方法,以执行特定句块)。它包含许多语句和方法,以执行特定的操作或计算数值。的操作或计算数值。第10页,共108页,编辑于2022年,星期二过程的二种类型:过程的二种类型:子程序:执行一系列操作的过程。子程序:执行一系列操作的过程。函数过程:特殊的、能返回值的函数过程:特殊的、能返回值的FunctionFunction过程。过程。能否返回值,是过程和函数之间能否返回值,是过程和函数之间最大的区别。最大的区别。第11页,共108页,编辑于2022年,星期二函数过程函数过程 也称为也称为FunctionFunction过程,是一种能够返回具过程,是一种能够返回具体值的过程,返回的值可以在表达式中使用。体值的过程,返回的值可以在表达式中使用。函数过程以关键字函数过程以关键字FunctionFunction开始,并以开始,并以End End FunctionFunction语句作为结束。语句作为结束。Public|Private Function函函数数名名称称(参参数数1 as 数数据据类类型型,参参数数2 as 数数据据类类型型)as 数据类型数据类型语句块语句块1Exit Function函数名函数名=函数将要返回的值函数将要返回的值语句块语句块1End FunctionPublic Public 所有模块的所有其他过程都可调用所有模块的所有其他过程都可调用Private Private 适用于同一模块中的其他过程适用于同一模块中的其他过程第12页,共108页,编辑于2022年,星期二子过程子过程 :子过程也称为子过程也称为SubSub过程,是执行一项操过程,是执行一项操作的过程。它没有返回值,子程序以关键作的过程。它没有返回值,子程序以关键字字SubSub开始,并以开始,并以End SubEnd Sub语句作为结束。语句作为结束。使用过程的主要优点:写一个功能模使用过程的主要优点:写一个功能模块,必要时可多次调用,若模块有错误,块,必要时可多次调用,若模块有错误,改正之后,则程序中所有引用它的地方都改正之后,则程序中所有引用它的地方都得到维护。得到维护。第13页,共108页,编辑于2022年,星期二子过程格式:子过程格式:Public|PrivateStatic Sub Public|PrivateStatic Sub 子程序名子程序名()As As 数据类型数据类型 Exit SubExit Sub End SubEnd Sub Public Public 所有模块的所有其他过程都可调用所有模块的所有其他过程都可调用 Private Private 适用于同一模块中的其他过程适用于同一模块中的其他过程 Static Static 过程中的变量在模块打开期间始终有效过程中的变量在模块打开期间始终有效第14页,共108页,编辑于2022年,星期二在数据库窗口对象下,双击在数据库窗口对象下,双击“在设在设计视图中创建窗体计视图中创建窗体”,在窗体中添,在窗体中添加文本框,标签名称为加文本框,标签名称为“欢迎欢迎”,添加添加2 2个命令按钮,标题分别为个命令按钮,标题分别为“显示显示”和和“清除清除”,然后选中,然后选中“显示显示”按钮,按钮,单击单击“属性属性”按钮,选择按钮,选择“事件事件”选项选项卡,单击卡,单击“单击单击”项中的项中的“”,在,在代码窗口中输入代码窗口中输入vbavba语句。在代码窗口语句。在代码窗口的对象框中选择的对象框中选择“清除清除”按钮(按钮(命令命令2 2),在该过程中输入),在该过程中输入vbavba语句。在代语句。在代码窗口的对象框中选择码窗口的对象框中选择“form”form”,在该过程中输入在该过程中输入vbavba语句。返回到窗语句。返回到窗体,单击窗体视图,分别单击显示体,单击窗体视图,分别单击显示和清除按钮,看运行情况。和清除按钮,看运行情况。例例1第15页,共108页,编辑于2022年,星期二例例2 2:在模块对象下创建函数过程,计算球的体积。操作步:在模块对象下创建函数过程,计算球的体积。操作步骤如下:骤如下:在模块对象下,单击在模块对象下,单击“新建新建”按钮,打开新建模块窗口,单击按钮,打开新建模块窗口,单击“插入插入”菜单上菜单上“过程过程”,在过程对话框中选择类型为,在过程对话框中选择类型为“函数函数”范围为范围为“公共的公共的”,输入名称为,输入名称为“v”v”,单击,单击“确定确定”按钮。在函数过程中按钮。在函数过程中填写填写vbavba语句。语句。Public Function V(R As Single)As Single Public Function V(R As Single)As Single V V3.1416*R3*4/33.1416*R3*4/3End FunctionEnd Function单击单击“视图视图”菜单上菜单上“立即窗口立即窗口”,在立即窗口输入语句,在立即窗口输入语句 :Print v(2)显示结果:显示结果:33.5104 计算半径为计算半径为2 2的球的体积。的球的体积。第16页,共108页,编辑于2022年,星期二 VBA VBA 程序设计基础程序设计基础 面向对象程序设计的基本概念面向对象程序设计的基本概念1.1.对象对象在在VBAVBA程序设计时,界面上的所有事物都可以称程序设计时,界面上的所有事物都可以称为对象。每一个对象都有自己的属性、方法和事件。为对象。每一个对象都有自己的属性、方法和事件。用户是通过属性、方法和事件来处理对象的。用户是通过属性、方法和事件来处理对象的。第17页,共108页,编辑于2022年,星期二属性和方法:描述了对象的性质和行为。属性和方法:描述了对象的性质和行为。引用:对象引用:对象.属性属性 或或 对象对象.方法方法 参数名表参数名表 对象的属性例:对象的属性例:label0.caption=“label0.caption=“学生成绩表学生成绩表”对象的方法例:对象的方法例:debug.print 2+3debug.print 2+3 DoCmd对象:对象:有许多方法,有许多方法,如如 Openform 打开窗体打开窗体 例如:例如:DoCmd.Openform“学生登记学生登记”GotoControl 将焦点移到窗体上的一个控件将焦点移到窗体上的一个控件 SetFocus 将焦点移到窗体上的一个控件将焦点移到窗体上的一个控件 FindRecord 查找记录查找记录 RunCommand执行执行Access菜单和工具条上的命令菜单和工具条上的命令 2.对象的属性和方法对象的属性和方法 第18页,共108页,编辑于2022年,星期二 打开当前数据库中的打开当前数据库中的“雇员雇员”窗体窗体 DoCmd.OpenForm Employees,Title=Sales Representative在立即窗口输入:在立即窗口输入:Debug.print 2*3Debug.print 2*3结果为结果为 6 6方法的例子方法的例子省略的参数省略的参数方法方法窗体名窗体名标题名标题名第19页,共108页,编辑于2022年,星期二3.事件事件 事件:对象可辨认的动作,如单击鼠标、按下某个键等事件:对象可辨认的动作,如单击鼠标、按下某个键等事件响应代码:若为一个事件编写一段事件响应代码:若为一个事件编写一段VBAVBA代码,则在事件发生代码,则在事件发生时执行代码,完成指定的动作。时执行代码,完成指定的动作。第20页,共108页,编辑于2022年,星期二窗体中添加文本框和命令按钮,命令按钮属性中窗体中添加文本框和命令按钮,命令按钮属性中“单单击击”事件中添加事件中添加vbavba代码,然后窗体视图查看结果。代码,然后窗体视图查看结果。Private Sub Private Sub 命令命令2_2_Click()Click()文本文本0.0.FontSize=20FontSize=20 End Sub End Sub第21页,共108页,编辑于2022年,星期二 VBA编程环境编程环境工程窗口工程窗口选择对象选择对象属性窗口属性窗口选择对象的选择对象的属性属性代码窗代码窗口口选择选择事件事件1.1.进入进入VBEVBE编程环境编程环境 第22页,共108页,编辑于2022年,星期二2.VBA 窗口窗口 1)标准工具栏标准工具栏 视图视图Microsoft AccessMicrosoft Access按钮:切换按钮:切换Access 2000Access 2000窗口窗口 插入按钮:插入模块或过程插入按钮:插入模块或过程 运行子过程运行子过程/用户窗体按钮:运行模块中的程序用户窗体按钮:运行模块中的程序 中断按钮:中断正在运行的程序中断按钮:中断正在运行的程序 重新设置按钮:结束正在运行的程序重新设置按钮:结束正在运行的程序 设置模式按钮:在设计模式和非设计模式之间切换设置模式按钮:在设计模式和非设计模式之间切换 工程资源管理器按钮:用于打开工程资源管理器工程资源管理器按钮:用于打开工程资源管理器 属性窗口按钮:用于打开属性窗口属性窗口按钮:用于打开属性窗口 对象浏览器按钮:用于打开对象浏览器对象浏览器按钮:用于打开对象浏览器Microsoft AccseeMicrosoft Accsee插入模块插入模块运行子过程运行子过程/用户窗体用户窗体设计模式设计模式中断中断重新设计重新设计 工程资源管理器工程资源管理器 对象浏览器对象浏览器属性窗口属性窗口第23页,共108页,编辑于2022年,星期二 3.工程、属性、代码窗口工程、属性、代码窗口 工程窗口:也叫工程资源管理器,工程窗口:也叫工程资源管理器,显示应用程序中用到的模块文件列表。显示应用程序中用到的模块文件列表。可控制代码窗口、对象窗口,以及对象可控制代码窗口、对象窗口,以及对象文件夹的显示。文件夹的显示。属性窗口:所选对象的属性列表。可属性窗口:所选对象的属性列表。可“按字母序按字母序”和和“按分类序按分类序”查看属性,查看属性,编辑这些对象的属性。编辑这些对象的属性。在在属属性性窗窗口口显显示示AccessAccess类类对对象象的的方方法法:先先在在设设计计视视图图中中打打开开对对象象。再再双双击击工工程程窗窗口口上上的的一一个个模模块块或或类类,代代码码窗窗口口就就会会显显示示相相应应的指令和声明。的指令和声明。代码窗口:用于输入和编辑代码窗口:用于输入和编辑VBAVBA代码。代码。第24页,共108页,编辑于2022年,星期二 4.在代码窗口中编程在代码窗口中编程 (三三)对象列表对象列表过程列表过程列表提示信息提示信息自动显自动显示或示或Ctrl+JCtrl+J F1:VBA帮助窗口帮助窗口 F2:对象浏览器窗口对象浏览器窗口第25页,共108页,编辑于2022年,星期二 常量、变量、运算符和表达式常量、变量、运算符和表达式 一、数据类型和数据库对象一、数据类型和数据库对象在在 Visual BasicVisual Basic环境下进行计算时,常常需要临时存环境下进行计算时,常常需要临时存储数据。像大多数编程语言那样,储数据。像大多数编程语言那样,Visual BasicVisual Basic使用变量来使用变量来存储值。变量有名字和数据类型。变量的数据类型决定了如存储值。变量有名字和数据类型。变量的数据类型决定了如何将这些值存储到计算机的内存中。在声明变量时也可指定何将这些值存储到计算机的内存中。在声明变量时也可指定它的数据类型,所有变量都具有数据类型,以决定能够存储它的数据类型,所有变量都具有数据类型,以决定能够存储哪种数据类型。用户可以定义各种数据类型。哪种数据类型。用户可以定义各种数据类型。AccessAccess中数据类型的应用:声明过程中的变量中数据类型的应用:声明过程中的变量,定义表、定义表、函数的参数等。函数的参数等。VBA VBA的数据类型表的数据类型表 第26页,共108页,编辑于2022年,星期二VBA主要数据类型主要数据类型 第27页,共108页,编辑于2022年,星期二 数值型数据的符号:数值型数据的符号:整型整型%、长整型、长整型&、单精度型、单精度型!、双精度型、双精度型#例:例:10.33#100%10.33#100%布尔型数据的值:布尔型数据的值:两种值:两种值:TrueTrue和和FalseFalse,其他数值类型转换为布尔型其他数值类型转换为布尔型时,时,0 0变成变成FalseFalse,其他值均为其他值均为TrueTrue。布尔型转换为其他型时,布尔型转换为其他型时,FalseFalse成为成为0 0,TrueTrue成为成为-1-1。日期型变量的值:日期型变量的值:日期值用日期值用#括起来,如括起来,如#2004/11/23#2004/11/23#Variant(Variant(变体变体)数据类型:数据类型:若未给变量指定数据类型,若未给变量指定数据类型,AccessAccess自动指定其为自动指定其为VariantVariant类类型。型。VariantVariant可包含除定长可包含除定长StringString数据及用户定义类型之外的任数据及用户定义类型之外的任何种类的数据。也可包含何种类的数据。也可包含EmptyEmpty、ErrorError、Nothing Nothing 及及NullNull特殊特殊值。值。第28页,共108页,编辑于2022年,星期二%(%(Integer)Integer)、&(Long)&(Long)、!(Single)!(Single)、#(Double)#(Double)、$(String)$(String)和和(Currency)Currency)。类型说明符号使用时是类型说明符号使用时是作为变量名的一部分,放在变量名的最后一个字符。作为变量名的一部分,放在变量名的最后一个字符。例如,例如,intX%intX%是一个整型变量;是一个整型变量;douY#douY#是一个双精度变是一个双精度变量;量;strZ$strZ$是个字符串变量。在使用时不能将类型说明是个字符串变量。在使用时不能将类型说明符号省略。如:符号省略。如:intX%=1243 intX%=1243 douY#=45665.456 douY#=45665.456 strZ$=Access strZ$=Access 第29页,共108页,编辑于2022年,星期二二、二、变量变量Visual BasicVisual Basic使用变量来存储值。用来保存在程序运行使用变量来存储值。用来保存在程序运行期间可修改的数据。期间可修改的数据。变量名可随意定义,但不能与变量名可随意定义,但不能与VBAVBA关键词冲突,关键词冲突,变量的值可按需变化。变量必须先声明数据类型,然后才能使用。变量的值可按需变化。变量必须先声明数据类型,然后才能使用。1 1声明变量声明变量每一个变量都必须在其使用的过程中事先声明。每一个变量都必须在其使用的过程中事先声明。声明变量的作用:指定变量的数据类型和作用域。声明变量的作用:指定变量的数据类型和作用域。未声明的变量默认为未声明的变量默认为VariantVariant类型。若要求在使用变量前必类型。若要求在使用变量前必须声明,可进行设置。须声明,可进行设置。声明一个变量用声明一个变量用DimDim语句,它的语法格式如下:语句,它的语法格式如下:Dim Dim 变量名变量名 As As 数据类型数据类型 语句中的语句中的“As As 类型类型”子句是可选的。如果使用了该子句,子句是可选的。如果使用了该子句,就可以定义变量的数据类型或对象类型。就可以定义变量的数据类型或对象类型。第30页,共108页,编辑于2022年,星期二使用使用DimDim语句来声明变量,其功能为声明变量,并为变量分配存储语句来声明变量,其功能为声明变量,并为变量分配存储空间。例如,空间。例如,DimDim MYName As StringMYName As StringDim s1 As String*50 Dim s1 As String*50 说明定长字符串变量可存放说明定长字符串变量可存放5050字符字符Dim x As IntegerDim x As Integer或或 Dim x%Dim x%声明了字符串变量声明了字符串变量MyNameMyName的的Sting Sting。可给其赋值:可给其赋值:MyName=“MyName=“李红李红”赋值之后即可引用该变量:赋值之后即可引用该变量:MsgBox “MsgBox “姓名:姓名:”&”&MyNameMyName弹出消息框,显示:姓名:李红弹出消息框,显示:姓名:李红可在同一行内声明多个变量。例如,可在同一行内声明多个变量。例如,Dim A_Var,t1 As Boolean,D1 As DateDim A_Var,t1 As Boolean,D1 As Date其中其中A_VarA_Var的类型未指定类型。默认为的类型未指定类型。默认为VariantVariant。2条语句是等价的第31页,共108页,编辑于2022年,星期二变量的初始化:声明而未赋值的变量的值为:变量的初始化:声明而未赋值的变量的值为:数值变量初始化为数值变量初始化为0 0变长字符串为零长度串,定长字符串都填变长字符串为零长度串,定长字符串都填上零上零 VariantVariant变量初始化为变量初始化为 EmptyEmpty 第32页,共108页,编辑于2022年,星期二2 2变量的命名原则变量的命名原则在在VBAVBA的的代代码码中中,过过程程、变变量量及及常常量量的的名名称称有有如如下下规规定:定:(l l)最长只能有最长只能有255255个字符。个字符。(2 2)必须用字母开头。)必须用字母开头。(3 3)可以包含字母、数字或下划线字符)可以包含字母、数字或下划线字符“”。(4 4)不能包含标点符号或空格。)不能包含标点符号或空格。(5 5)不不能能是是Visual Visual BasicBasic关关键键字字。关关键键字字是是那那些些在在Visual Visual BasicBasic中中用用作作语语法法的的一一部部分分的的词词,包包括括预预定定义义语语句句(如如IfIf和和LoopLoop)、函函数数(如如LenLen和和AbsAbs)和和运运算算符符(如如OrOr和和Mod Mod)等等。等等。第33页,共108页,编辑于2022年,星期二在在VBA编程窗口编程窗口 选择:工具选择:工具|选项选项数据库所有新模块中自动数据库所有新模块中自动添加添加Option Explicit语句,语句,功能为:强制对模块中的功能为:强制对模块中的所有变量进行显式声明。所有变量进行显式声明。也可直接将语句输入到模也可直接将语句输入到模块的声明节。块的声明节。3.强制对模块中的所有变量进行显式声明的设置。强制对模块中的所有变量进行显式声明的设置。第34页,共108页,编辑于2022年,星期二4 4隐含型变量隐含型变量没有直接定义,借用一个值指定给变量名的方没有直接定义,借用一个值指定给变量名的方式来建立的变量称为隐含型变量。式来建立的变量称为隐含型变量。例:例:s1=123s1=123这种变量名称后没有附加类型说明字符来指明的隐这种变量名称后没有附加类型说明字符来指明的隐含型变量的数据类型为默认的含型变量的数据类型为默认的VariantVariant类型。类型。若在命令名称后加附加类型说明则指定了改变量的数若在命令名称后加附加类型说明则指定了改变量的数据类型。据类型。例:例:s1%=123 s1s1%=123 s1则为整形变量。则为整形变量。第35页,共108页,编辑于2022年,星期二5.5.变量的作用域变量的作用域变量的范围确定了能够使用该变量的那部分代码。变量的范围确定了能够使用该变量的那部分代码。一旦超出了作用范围,就不能引用它的内容。变量的一旦超出了作用范围,就不能引用它的内容。变量的作用范围是在模块中声明确定的。声明变量时可以使作用范围是在模块中声明确定的。声明变量时可以使用三种不同的作用范围:用三种不同的作用范围:PublicPublic、PrivatePrivate、StaticStatic和和DimDim。变量的作用域决定了这个变量是被一个过程使用还是变量的作用域决定了这个变量是被一个过程使用还是一个模块中的所有过程使用,还是被数据库中的所有过程一个模块中的所有过程使用,还是被数据库中的所有过程使用。使用。第36页,共108页,编辑于2022年,星期二(1)(1)过程内部使用的变量过程内部使用的变量 过过程程级级变变量量只只有有在在声声明明它它们们的的过过程程中中才才能能被被识识别别,也也称称它们为局部变量。用它们为局部变量。用DimDim或者或者StaticStatic关键字来声明它们。例如:关键字来声明它们。例如:Dim V1 As IntegerDim V1 As Integer或或Static V1 As IntegerStatic V1 As Integer在在整整个个应应用用程程序序运运行行时时,用用StaticStatic声声明明的的局局部部变变量量中中的的值值一一直存在,而用直存在,而用DimDim声明的变量只在过程执行期间才存在。声明的变量只在过程执行期间才存在。(2 2)模块内部使用的变量)模块内部使用的变量 模模块块级级变变量量对对该该模模块块的的所所有有过过程程都都可可用用,但但对对其其他他模模块块的的代代码码不不可可用用。可可在在模模块块顶顶部部的的声声明明段段用用PrivatePrivate关关键键字字声声明明变变量,从而建立模块级变量。量,从而建立模块级变量。例如;例如;Private V1 As IntegerPrivate V1 As Integer第37页,共108页,编辑于2022年,星期二在在 模模 块块 级级,PrivatePrivate和和DimDim之之 间间 没没 有有 什什 么么 区区 别别,但但PrivatePrivate更更好好些些,因因为为很很容容易易把把它它和和PublicPublic区区别别开开来来,使使代码更容易理解。代码更容易理解。(3 3)所有模块使用的变量)所有模块使用的变量为为了了使使模模块块级级的的变变量量在在其其他他模模块块也也有有效效,可可用用PublicPublic关关键键字字声声明明变变量量。公公用用变变量量中中的的值值可可用用于于应应用用程程序序的的所所有有过过程程。和和所有模块级变量一样,也在模块顶部的声明来声明公用变量。所有模块级变量一样,也在模块顶部的声明来声明公用变量。例如:例如:Public V1 As IntegerPublic V1 As Integer用用户户不不能能在在过过程程中中声声明明公公用用变变量量,而而在在模模块块中中声声明明的变量可用于所有模块。的变量可用于所有模块。第38页,共108页,编辑于2022年,星期二 三、数据类型之间的转换三、数据类型之间的转换 例:下列程序中将双精度型变量转换成字符串型。例:下列程序中将双精度型变量转换成字符串型。Dim S1 As Double Dim S1 As Double Dim S2 As String Dim S2 As String S1=437.327 S1 S1=437.327 S1变量赋值为变量赋值为437.327437.327 S2=CStr(S1)S1 S2=CStr(S1)S1变量值转换为字符变量值转换为字符“437.327”“437.327”第39页,共108页,编辑于2022年,星期二四、用户定义的数据类型四、用户定义的数据类型 应用过程中可以包括一个或多个标准数据类型的数据类型,应用过程中可以包括一个或多个标准数据类型的数据类型,即是用户定义数据类型。用户自定义类型可以是任何用即是用户定义数据类型。用户自定义类型可以是任何用TypeType语语句定义的数据类型。用户自定义类型可包含一个或多个基本数句定义的数据类型。用户自定义类型可包含一个或多个基本数据类型的数据元素、数组或一个先前定义的用户自定义类型。据类型的数据元素、数组或一个先前定义的用户自定义类型。用户定义数据类型可以在用户定义数据类型可以在Type End TypeType End Type关键字间定关键字间定义,定义格式为:义,定义格式为:Type Type 数据类型名数据类型名 As As As As End TypeEnd Type第40页,共108页,编辑于2022年,星期二例 实现方法如下:在数据库窗口模块对象下,单击在数据库窗口模块对象下,单击“新建新建”按钮按钮输入输入 定义学生信息数据类型定义学生信息数据类型选择选择“插入插入”菜单中菜单中“过程过程”在对话框中选择在对话框中选择“子程序子程序”、“公共的公共的”或或“函函数数”,输入过程名为,输入过程名为cg1在过程中添加语句在过程中添加语句单击单击“运行运行”按按钮钮打开打开“立即窗口立即窗口”查看结果。查看结果。第41页,共108页,编辑于2022年,星期二补充:补充:*在在自自定定义义数数据据类类型型时时应应注注意意:Type语语句句只只能能在在模模块块级级使使用用。可可以以在在Type前前面面加加上上Public或或Private来来声声明明自自定定义义数数据据类类型型的的作作用用域域,这这与与其其它它VBA基基本本数数据据类类型型相相同同。声声明明自自定定义义数数据据类类型型的的域域时时,如如果果使使用用字字符符串串类类型,最好定长字符串,如型,最好定长字符串,如N1 As String*l0。使用使用Type语句声明了一个用户自定义类型后,就语句声明了一个用户自定义类型后,就可以在该声明范围内的任何位置声明该类型的变量。可可以在该声明范围内的任何位置声明该类型的变量。可以使用以使用Dim、private、Public、ReDim或或Static来声明用来声明用户自定义类型的变量。户自定义类型的变量。第42页,共108页,编辑于2022年,星期二五、数组五、数组 1.1.数组的声明和引用数组的声明和引用数组:表示一组具有相同数据类型的值,称为数组元素变量。数组:表示一组具有相同数据类型的值,称为数组元素变量。数组变量由变量名和数组下标构成。数组变量由变量名和数组下标构成。数组的声明:一般使用数组的声明:一般使用DimDim语句声明(定义)数组。语句声明(定义)数组。数组格式:数组格式:Dim Dim 数组名数组名(下标下标1 1下限下限 to to 下标下标1 1上限上限 AS AS 数据类型数据类型,下标下标2 2下限下限 to to 下标下标2 2上限上限)AS AS 数据类型数据类型 说明:说明:默认数组下标从零开始。例,默认数组下标从零开始。例,Dim S1(3)As Integer Dim S1(3)As Integer 数组变量数组变量S1S1,共有共有 4 4 个元素,个元素,S1(0)S1(0)、S1(1)S1(1)、S1(2)S1(2)、S1(3)S1(3)。第43页,共108页,编辑于2022年,星期二可使其从其他值开始。在模块顶部添加可使其从其他值开始。在模块顶部添加 Option BaseOption Base 语句。语句。例如,例如,Option Base 1Option Base 1 Dim S1(3)As Integer Dim S1(3)As Integer声明数组变量声明数组变量S1S1共有共有 3 3个元素,下标起始值为个元素,下标起始值为1 1,S1(1)S1(1)、S1(2)S1(2)、S1(3)S1(3)。也可用也可用ToTo子句对数组下标声明子句对数组下标声明例如,例如,Dim S1(1 to 3)As IntegerDim S1(1 to 3)As Integer Dim x(5 to 7)As long Dim x(5 to 7)As long分别指定分别指定S S数组的下标从数组的下标从1 1开始,开始,X X数组下标从数组下标从5 5开始。开始。第44页,共108页,编辑于2022年,星期二多维数组多维数组:多个下标。:多个下标。VBAVBA中中最多可到最多可到6060维维。例如例如:Dim N(1 To 2,1 To 3)As SingleDim N(1 To 2,1 To 3)As Single声明了一个声明了一个2 2乘乘3 3的两维数组,有的两维数组,有6 6个数组元素个数组元素。可将其想像可将其想像成矩阵,第一个参数为行号,第二个为列号。成矩阵,第一个参数为行号,第二个为列号。S(1,1),S(1,2),S(1,3),S(2,1),S(2,2),S(2,3)S(1,1),S(1,2),S(1,3),S(2,1),S(2,2),S(2,3)动态数组定义和使用的方法:动态数组定义和使用的方法:Dim new1()an longDim new1()an longReDim new1(3,3)ReDim new1(3,3)第45页,共108页,编辑于2022年,星期二数组引用实例:数组引用实例:第46页,共108页,编辑于2022年,星期二数组元素的引用:数组元素用数据名和下标引用。数组元素的引用:数组元素用数据名和下标引用。例如例如 Dim S(6)As Integer,N1 As IntegerDim S(6)As Integer,N1 As Integer For N1=0 to 6 For N1=0 to 6 S(N1)=20 S(N1)=20 Next Next六、数据库对象变量六、数据库对象变量 Form!Form!窗体名称窗体名称!控件名称控件名称.属性名称属性名称 Reports!Reports!报表名称报表名称!控件名称控件名称.属性名称属性名称七、变量标识命名法则七、变量标识命名法则 第47页,共108页,编辑于2022年,星期二八、符号常量八、符号常量 常量就是在应用程序的运行中不能改变的数值固定的常量就是在应用程序的运行中不能改变的数值固定的资料对象。在用资料对象。在用VBAVBA进行程序设计时,使用常量可以增加代进行程序设计时,使用常量可以增加代码的可读性和可维护性。码的可读性和可维护性。如果在代码中经常用到一些很长的数字,它们没有明如果在代码中经常用到一些很长的数字,它们没有明确的意义,并且很难记忆。这时,可以给这样的数字取确的意义,并且很难记忆。这时,可以给这样的数字取一个有实际意义的名字,以取代程序中的具体数值。另一个有实际意义的名字,以取代程序中的具体数值。另外,如果要对数字进行修改,只要修改常量的值就可以外,如果要对数字进行修改,只要修改常量的值就可以了,而不需要对所用到的数值一一进行修改。了,而不需要对所用到的数值一一进行修改。符号常量可以用符号常量可以用ConstConst语句创建,并且可在模块中使用。语句创建,并且可在模块中使用。第48页,共108页,编辑于2022年,星期二常量与变量一样也有常量与变量一样也有3 3个范围级别:过程级别、私有模个范围级别:过程级别、私有模块级别和公共模块级别。块级别和公共模块级别。在声明常量的同时,也设定了它的范围。用户可以使在声明常量的同时,也设定了它的