《第十一章模块与VBA编程.ppt》由会员分享,可在线阅读,更多相关《第十一章模块与VBA编程.ppt(91页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十一章模块与第十一章模块与VBAVBA编程编程 本章主要内容本章主要内容11.1VBA与模块的概念与模块的概念11.2VBA编程基础编程基础11.3VBA的程序结构的程序结构11.4过程定义和调用过程定义和调用11.5VBA的数据库编程的数据库编程11.1模块与模块与VBA的概念的概念一、模块的概念一、模块的概念 模块是模块是Access数据库中的一个对象,它存放着用数据库中的一个对象,它存放着用VBA语语言言(VisualBasicforApplications)编写的并能完成所编写的并能完成所有有ACCESSACCESS功能的程序代码。功能的程序代码。二、模块的分类二、模块的分类1 1标
2、准模块标准模块标准模块标准模块(文件扩展名为文件扩展名为文件扩展名为文件扩展名为.bas.bas)标准模块作用是合理组织程序或控制程序执行流程,纯标准模块作用是合理组织程序或控制程序执行流程,纯代码,不与任何对象(窗体、报表、控件等)相关联,可放代码,不与任何对象(窗体、报表、控件等)相关联,可放置在数据库中的任何位置,可以被工程内数据库对象调用。置在数据库中的任何位置,可以被工程内数据库对象调用。2 2类模块类模块类模块类模块(文件扩展名为文件扩展名为文件扩展名为文件扩展名为.clscls)类模块是含有类模块是含有类类定义的模块,包括其属性、事件和方法定义的模块,包括其属性、事件和方法的定义
3、。与窗体、报表、控件等紧密关联,如:的定义。与窗体、报表、控件等紧密关联,如:窗体模块和窗体模块和窗体模块和窗体模块和报表模块报表模块报表模块报表模块都是都是类类模块。模块。三、宏与模块三、宏与模块Access宏实质上就是宏实质上就是VBA程序,宏的操作都是由程序,宏的操作都是由VBA代码代码实现的。实现的。宏的用法简单,上手容易,比较适合没有编程基础的用户宏的用法简单,上手容易,比较适合没有编程基础的用户开发普通应用程序。宏的不足是功能较弱、运行效率较差。开发普通应用程序。宏的不足是功能较弱、运行效率较差。Access模块中内嵌的模块中内嵌的VBA功能强大,具有较完功能强大,具有较完善的语法
4、体系和强大的开发功能。它采用目前主流善的语法体系和强大的开发功能。它采用目前主流的面向对象机制和可视化编程环境,适用于开发的面向对象机制和可视化编程环境,适用于开发高级高级Access数据库应用系统。数据库应用系统。1将宏转换为模块(将宏转换为模块(两种情况)两种情况)转换窗体或报表中的宏转换窗体或报表中的宏转换不属于任何数据库对象(窗体和报表)的转换不属于任何数据库对象(窗体和报表)的全局宏全局宏。转换窗体或报表中的宏转换窗体或报表中的宏 在在“设计视图设计视图”中打开窗体。中打开窗体。“工具工具”菜单菜单“宏宏”命令项命令项“将窗体的宏转换为将窗体的宏转换为VisualBasic代码代码”
5、,屏幕显示,屏幕显示“转换窗体宏转换窗体宏”对话框,如图:对话框,如图:在对话框中单击在对话框中单击“转换转换”按钮,弹出按钮,弹出“转换完毕转换完毕”对话框。对话框。单击单击“确定确定”按钮完成转换。按钮完成转换。报表中的宏转换过程窗体时完全一样。报表中的宏转换过程窗体时完全一样。将全局宏转换为模块将全局宏转换为模块 在在“数据库数据库”窗口中单击窗口中单击“宏宏”对象,选择要转换的对象,选择要转换的宏宏宏宏文件文件文件文件。选择选择“文件文件”菜单中的菜单中的“另存为另存为”命令项,屏幕显示命令项,屏幕显示“另存为另存为”对话框,如图:对话框,如图:在对话框的在对话框的“保存类型保存类型”
6、下拉列表框中选择下拉列表框中选择“模块模块”,然后单击然后单击“确定确定”按钮,屏幕显示按钮,屏幕显示“转换宏转换宏”对话框。对话框。在对话框中单击在对话框中单击“转换转换”按钮,弹出按钮,弹出“转换完毕转换完毕”对对话框话框 单击单击“确定确定”按钮完成转换。按钮完成转换。“密码验证密码验证密码验证密码验证”宏转换成的代码如下:宏转换成的代码如下:2 2 2 2、为什么要使用模块?、为什么要使用模块?、为什么要使用模块?、为什么要使用模块?对于以下的操作,宏不能实现而对于以下的操作,宏不能实现而要使用模块来实现要使用模块来实现要使用模块来实现要使用模块来实现。(1)(1)复杂的数据库维护和操
7、作。复杂的数据库维护和操作。(2)(2)自定义的过程和函数。自定义的过程和函数。(3)(3)运行出错时的处理。运行出错时的处理。(4)(4)在代码中定义数据库的对象,用于动态地创建对象。在代码中定义数据库的对象,用于动态地创建对象。(5)(5)一次对多个记录进行处理。一次对多个记录进行处理。(6)(6)向过程传递变量参数。向过程传递变量参数。(7)(7)使用使用ActiveXActiveX控件和其他应用程序对象。控件和其他应用程序对象。3 3 3 3、什么是、什么是、什么是、什么是VBAVBAVBAVBA VBA VBA(Visual Basic for ApplicationsVisual
8、Basic for Applications)是广泛流行)是广泛流行的可视化应用程序开发语言的可视化应用程序开发语言VBVB(Visual BasicVisual Basic)的子集。)的子集。有有VBAVBA语言基础的读者阅读语言基础的读者阅读VBVB程序代码会感觉很熟悉,程序代码会感觉很熟悉,学习起来也会变得相当容易。学习起来也会变得相当容易。VBAVBA语法简单但功能强大,支持基于面向对象程序设计,语法简单但功能强大,支持基于面向对象程序设计,(OOP-Object Oriented ProgrammingOOP-Object Oriented ProgrammingOOP-Object
9、 Oriented ProgrammingOOP-Object Oriented Programming)非常适合初学者使用。非常适合初学者使用。需要注意的是,需要注意的是,VBVB语言开发系统是独立运行的开发环语言开发系统是独立运行的开发环境,它创建的应用程序可以独立运行在境,它创建的应用程序可以独立运行在WindowsWindows平台上;平台上;而而而而VBAVBAVBAVBA则不同,其编程环境和则不同,其编程环境和则不同,其编程环境和则不同,其编程环境和VBAVBAVBAVBA程序都必须依赖程序都必须依赖程序都必须依赖程序都必须依赖OfficeOfficeOfficeOffice应用程
10、应用程应用程应用程序(如序(如序(如序(如AccessAccessAccessAccess、WordWordWordWord、ExcelExcelExcelExcel等)。等)。等)。等)。三、模块的组成三、模块的组成三、模块的组成三、模块的组成声明:声明(定义)变量声明:声明(定义)变量过程过程(若干个):过程是模块的组成单元,分若干个):过程是模块的组成单元,分2 2种:种:子子(Sub)(Sub)过程过程 子过程没有返回值,它的定义格式如下:子过程没有返回值,它的定义格式如下:SubSubSubSub过程名过程名过程名过程名 程序代码程序代码程序代码程序代码 End SubEnd Sub
11、End SubEnd Sub 其中的程序代码表示要完成的一系列操作。调用子过程用其中的程序代码表示要完成的一系列操作。调用子过程用Call Call Call Call 过程名。过程名。过程名。过程名。函数函数(Function)(Function)函数过程又称为函数过程又称为FunctionFunction过程,函数过程有返回值,它的过程,函数过程有返回值,它的定义格式如下。定义格式如下。Function Function Function Function 过程名过程名过程名过程名 程序代码程序代码程序代码程序代码 End FunctionEnd FunctionEnd FunctionE
12、nd Function 调用函数过程时,调用函数过程时,直接引用函数过程的名称直接引用函数过程的名称直接引用函数过程的名称直接引用函数过程的名称。四、创建四、创建四、创建四、创建VBAVBAVBAVBA模块与编程环境模块与编程环境模块与编程环境模块与编程环境1 1进入进入VBEVBEVBEVBE编程环境编程环境编程环境编程环境 对于类模块和标准模块,进入对于类模块和标准模块,进入VBEVBE环境的方法不一样:环境的方法不一样:(1 1)进入)进入类模块类模块类模块类模块的的3 3种方法种方法方法方法1 1:在设计视图中打开窗体或报表,然后:在设计视图中打开窗体或报表,然后单击设计工具栏单击设计
13、工具栏单击设计工具栏单击设计工具栏 上的上的上的上的“代码代码代码代码”按钮。按钮。按钮。按钮。方法方法2 2:在设计视图中打开窗体或报表,然后:在设计视图中打开窗体或报表,然后右击需要编写代右击需要编写代右击需要编写代右击需要编写代 码的控件码的控件码的控件码的控件,在弹出的快捷菜单中选择,在弹出的快捷菜单中选择“事件生成器事件生成器”命命 令项。令项。方法方法3 3:在设计视图中打开窗体或报表,:在设计视图中打开窗体或报表,打开需要编写代码控打开需要编写代码控打开需要编写代码控打开需要编写代码控 件的件的件的件的“属性属性属性属性”对话框对话框对话框对话框,单击单击“事件事件”选项卡选项卡
14、右侧的右侧的“生成器生成器”按钮,按钮,弹出弹出“选择生成器选择生成器”对话框对话框“代码生成器代码生成器”“确定确定”。(2 2)进入)进入标准模块标准模块标准模块标准模块的方法的方法方法方法1 1:在:在“数据库数据库”窗口,窗口,“工具工具工具工具”“宏宏宏宏”,“Visual BasicVisual BasicVisual BasicVisual Basic编辑器编辑器编辑器编辑器”。方法方法2 2:选择:选择“数据库数据库”窗窗口口 中的中的“模块模块模块模块”对象,对象,单击单击“新建新建新建新建”按钮。按钮。方法方法3 3:在在“数据库数据库”窗口中窗口中 双击存在的模块双击存在
15、的模块双击存在的模块双击存在的模块.2 2、集成编程环境、集成编程环境VBEVBE界面:界面:工具栏工具栏属属属属性性性性窗窗窗窗口口口口代码窗口代码窗口代码窗口代码窗口工程窗口工程窗口工程窗口工程窗口(1 1 1 1)VBEVBEVBEVBE工具栏工具栏工具栏工具栏 VBEVBE界面中包括有界面中包括有“标准标准”、“编辑编辑”、“调试调试”和和“用户窗体用户窗体”等多种工具栏,可选择等多种工具栏,可选择“视图视图”菜单中菜单中“工工具栏具栏”命令下的子命令显示和隐藏这些工具栏。如图为命令下的子命令显示和隐藏这些工具栏。如图为“标准标准”工具栏。工具栏。按按按按 钮钮钮钮名名名名 称称称称功
16、功功功 能能能能Access视图视图用于从用于从VBE切切换换到数据到数据库库窗口窗口插入模插入模块块插入新的模插入新的模块块运行子运行子过过程程/用用户户窗体窗体运行模运行模块块程序程序中断运行中断运行中断正在运行的程序中断正在运行的程序重新重新设设置置结结束正在运行的程序,重新束正在运行的程序,重新进进入模入模块设计块设计状状态态设计设计模式模式进进入和退出入和退出设计设计模式模式工程工程资资源管理器源管理器打开工程打开工程资资源管理器窗口源管理器窗口属性窗口属性窗口打开属性窗口打开属性窗口对对象象浏览浏览器器打开打开对对象象浏览浏览器窗口器窗口(2 2 2 2)工程窗口)工程窗口)工程窗
17、口)工程窗口工程资源管理器,显示应用程序的所有模块文件。工程资源管理器,显示应用程序的所有模块文件。3 3个按钮:个按钮:查看代码查看代码查看代码查看代码 按钮可以打开相应的代码窗口。按钮可以打开相应的代码窗口。查看对象查看对象查看对象查看对象 按钮可以打开相应的对象窗口。按钮可以打开相应的对象窗口。切换文件夹切换文件夹切换文件夹切换文件夹 可以隐藏或显示对象的分类文件夹。可以隐藏或显示对象的分类文件夹。(3 3 3 3)属性窗口)属性窗口)属性窗口)属性窗口 列出了所选对象的属性,由列出了所选对象的属性,由“对象对象”框和框和“属性属性”列表组列表组成。成。对象框对象框对象框对象框:用于列出
18、当前所选的对象。用于列出当前所选的对象。属性列表属性列表属性列表属性列表:按字母或分类对对象属性进行排序。:按字母或分类对对象属性进行排序。可以在属性窗口中直接用前面用到的方法设置可以在属性窗口中直接用前面用到的方法设置 对象的属性(静态设置方法)。对象的属性(静态设置方法)。可以在代码窗口中用可以在代码窗口中用VBAVBA代码编辑对象的属代码编辑对象的属 性(动态设置方法)。性(动态设置方法)。(4 4 4 4)代码窗口)代码窗口)代码窗口)代码窗口 代码窗口主要是用来编写、显示以及编辑代码窗口主要是用来编写、显示以及编辑VBAVBA代码,代码,如下图所示。如下图所示。代码窗口代码窗口数据库
19、引擎数据库引擎数据库引擎数据库引擎五、标准模块例子五、标准模块例子(1)标准)标准子过程子过程子过程子过程例子例子PublicSubarea()Dims,rAsStringConstPIAsSingle=3.14159r=InputBoxInputBox(请输入半径请输入半径:)s=Round(PI*r*r,2)MsgBoxMsgBoxs,圆的面积是圆的面积是:EndSub(2 2 2 2)标准函数过程例子)标准函数过程例子)标准函数过程例子)标准函数过程例子计算圆面积模块:计算圆面积模块:计算圆面积模块:计算圆面积模块:Public FunctionFunction s(r As Singl
20、e)As SingleConst PI As Single=3.14159r=InputBoxInputBox(请输入半径:)s=Round(PI*r*r,2)Debug.PrintDebug.PrintDebug.PrintDebug.Print s s s sEnd Function计算阶乘模块:计算阶乘模块:计算阶乘模块:计算阶乘模块:Public FunctionFunction fac(n As Integer)As LongDim m As Integerfac=1:m=1Do While m=n fac=fac*m m=m+1LoopEnd Function六、一个六、一个六、一
21、个六、一个类模块类模块类模块类模块例子例子例子例子设计一个计算圆面积及整数阶乘的窗体如下图:设计一个计算圆面积及整数阶乘的窗体如下图:设计一个计算圆面积及整数阶乘的窗体如下图:设计一个计算圆面积及整数阶乘的窗体如下图:求圆面积按钮的事件代码如下求圆面积按钮的事件代码如下求圆面积按钮的事件代码如下求圆面积按钮的事件代码如下:PrivateSubCmdarea_Click()CallareaCallareaEndSub求阶乘按钮的事件代码如下:求阶乘按钮的事件代码如下:求阶乘按钮的事件代码如下:求阶乘按钮的事件代码如下:PrivateSubCmdfac_Click()DimnAsInteger,r
22、esultAsLongn=InputBoxInputBox(请输入请输入n:)result=fac(n)MsgBoxMsgBox(阶乘为阶乘为:&result)EndSub 演示七、管理系统中的七、管理系统中的七、管理系统中的七、管理系统中的类模块类模块类模块类模块例子例子例子例子 基于图书管理系统数据库建立一个简单管理系统。基于图书管理系统数据库建立一个简单管理系统。基于图书管理系统数据库建立一个简单管理系统。基于图书管理系统数据库建立一个简单管理系统。窗体中二个文本框和一个命令按钮对应的窗体中二个文本框和一个命令按钮对应的窗体中二个文本框和一个命令按钮对应的窗体中二个文本框和一个命令按钮对
23、应的VBA VBA VBA VBA 代码如下:代码如下:代码如下:代码如下:计数标签计数标签计数标签计数标签PrivateSubCom1_Click()Com1_Click()确定按钮的确定按钮的确定按钮的确定按钮的clickclick事件代码事件代码事件代码事件代码Dimusername,passwordAsStringusernameusername=chen2008passwordpassword=1234IfUCase(Me.Tuser.Value)UCase(username)OrMe.Tword.ValuepasswordThenMsgBox(错误的用户名或密码错误的用户名或密码,
24、请重新输入请重新输入!)Me.Tuser.Value=Me.Tword.Value=Me.Tuser.SetFocusMe.Lab1.Caption=CStr(CInt(Me.Lab1.Caption)+1)IfCInt(Me.Lab1.Caption)3ThenDoCmd.Close,acSaveNoEndIfExitSubEndIfMsgBox(欢迎进入图书查询管理系统欢迎进入图书查询管理系统)DoCmd.OpenFormDoCmd.OpenFormform1form1EndSubForm1Form1窗体设计视图如下:窗体设计视图如下:选项组命令按钮标签”确定确定确定确定“按钮的按钮的按钮
25、的按钮的clickclick事件代码如下:事件代码如下:事件代码如下:事件代码如下:PrivateSubCom1_Click()”确定确定确定确定“按钮的按钮的按钮的按钮的clickclick事件代事件代事件代事件代码码码码SelectCaseMe.Frame4Me.Frame4选项组选项组选项组选项组Case1DoCmd.OpenQuery借阅记录查询借阅记录查询Case2DoCmd.OpenQuery未借出图书查询未借出图书查询Case3DoCmd.OpenForm读者信息维护读者信息维护Case4DoCmd.OpenReport图书信息图表图书信息图表,acViewPreviewacVi
26、ewPreviewEndSelectEndSub注意加上此参数注意加上此参数演示演示 11.2 VBA11.2 VBA编程基础编程基础一、数据类型一、数据类型一、数据类型一、数据类型:VBAVBA提供了较为完备的的数据类型,它包含了除提供了较为完备的的数据类型,它包含了除AccessAccess表表 中的中的OLEOLE对象和备注类型以外的其他所有数据类型。对象和备注类型以外的其他所有数据类型。数据数据类类型型类类型型标识标识后后缀缀字字节节 范范 围围默默认值认值字字节节byte1布布尔尔Boolean2Tree或或FalseFalse整数整数Integer%2-32 76832 7670长
27、长整数整数Long&4-2 147 483 6482 147 483 6470单单精度数精度数Single!4负负数:数:-3.402 823E38-1.401 298E-45正数:正数:1.401 298E-453.402 823E380双精度数双精度数Double#8负负数:数:-1.797 693 134 862 32E308-4.946 564 584 124 7E-324正数:正数:4.946 564 584 124 7E-3241.797 693 134 862 32E3080货币货币Currency8-922 337 203 685 477.580 8922 337 203 68
28、5 477.580 70字符串字符串String$065 500个字符个字符“”日期型日期型Date8100年年1月月1日日9999年年12月月31日日0对对象型象型Object4变变体体类类型型Variant无数字和双精度同,文本和字符串同数字和双精度同,文本和字符串同Empty 不定不定不定不定二、常量二、常量二、常量二、常量1 1 1 1数值常量数值常量数值常量数值常量 数值常量由数字等组成,如数值常量由数字等组成,如256256、123.45123.45、34.123 E-534.123 E-5等。等。2 2 2 2字符常量字符常量字符常量字符常量 由定界符括起来的一串字符,如由定界符
29、括起来的一串字符,如”Computer”Computer”、”ABC”ABC”武汉武汉”3 3 3 3符号常量符号常量符号常量符号常量 符号常量可用符号常量可用ConstConst语句创建,格式如下:语句创建,格式如下:Const Const 符号常量名称符号常量名称=常量值常量值 一般用大写命名,以便和变量区分。一般用大写命名,以便和变量区分。例如,下面语句定义了符号常量例如,下面语句定义了符号常量PIPI,其值为,其值为3.14163.1416。Const PI=3.1416Const PI=3.1416 如果在如果在ConstConst前面加上前面加上GlobalGlobal或或Publ
30、icPublic,则定义的符号,则定义的符号常量就是全局符号常量,这样,在所有的模块中都可以使用。常量就是全局符号常量,这样,在所有的模块中都可以使用。在定义符号常量时,不需要为常量指出数据类型,在定义符号常量时,不需要为常量指出数据类型,VBAVBA会会自动确定其数据类型。自动确定其数据类型。4 4 4 4系统常量系统常量系统常量系统常量 系统常量是指系统常量是指AccessAccess启动时自动建立的常量,包括:启动时自动建立的常量,包括:TrueTrue、FalseFalse、YesYes、NoNo、OffOff、OnOn和和NullNull等等 5 5 5 5内部常量内部常量内部常量内
31、部常量 内部常量是内部常量是VBAVBA预定义的内部符号常量,所有内部常量预定义的内部符号常量,所有内部常量均可在宏或均可在宏或VBAVBA代码中使用。通常,内部常量通过前两个字代码中使用。通常,内部常量通过前两个字母来指明定义该常量的对象库。母来指明定义该常量的对象库。AccessAccess数据库的常量:数据库的常量:以以“ac”ac”开头,例如:开头,例如:acCmdSaveAsacCmdSaveAs,ActiveX Data ObjectsActiveX Data Objects(ADOADO)接口数据库的常量:)接口数据库的常量:以以“ad”ad”开头,例如:开头,例如:adCmdO
32、penTableadCmdOpenTableVBVB库的常量库的常量:以以“vbvb”开头。开头。三、变量三、变量三、变量三、变量 变量:在程序运行过程中其值可以改变的量变量:在程序运行过程中其值可以改变的量变量:在程序运行过程中其值可以改变的量变量:在程序运行过程中其值可以改变的量。1 1变量的命名规则变量的命名规则变量的命名规则变量的命名规则(1)(1)变量名只能由字母、数字和下划线组成。变量名只能由字母、数字和下划线组成。变量名只能由字母、数字和下划线组成。变量名只能由字母、数字和下划线组成。(2)(2)变量名只能以字母开头。变量名只能以字母开头。变量名只能以字母开头。变量名只能以字母开
33、头。(3)(3)变量名不能使用系统保留的关键字,变量名不能使用系统保留的关键字,变量名不能使用系统保留的关键字,变量名不能使用系统保留的关键字,例如例如例如例如PRINTPRINT、WHEREWHERE等。等。等。等。(4)(4)在在在在VBAVBA的变量名中的变量名中的变量名中的变量名中不区分大小写字母不区分大小写字母不区分大小写字母不区分大小写字母 在命名变量时,习惯采用大小写字母混写,在命名变量时,习惯采用大小写字母混写,在命名变量时,习惯采用大小写字母混写,在命名变量时,习惯采用大小写字母混写,例如:例如:例如:例如:PhntTextPhntText 2 2 2 2变量类型的定义变量类
34、型的定义变量类型的定义变量类型的定义 (1)(1)(1)(1)隐含型变量隐含型变量隐含型变量隐含型变量:变量名后加后缀变量名后加后缀变量名后加后缀变量名后加后缀例如,例如,NewVarNewVar%=65%=65 定义整形变量。定义整形变量。无后缀时,系统会默认为无后缀时,系统会默认为VariantVariant(不定、通用)数据类型。(不定、通用)数据类型。(2)(2)(2)(2)显式变量显式变量显式变量显式变量:先定义,后使用先定义,后使用 Dim Dim Dim Dim 变量名变量名变量名变量名 As As As As 类型名类型名类型名类型名例如,定义整型变量:例如,定义整型变量:Ne
35、wVarNewVar:Dim Dim NewVarNewVar As Integer As Integer 定义定长字符串变量定义定长字符串变量MyNameMyName:Dim Dim MyNameMyName As String*10 As String*10 声明但未赋值时变量的值:声明但未赋值时变量的值:声明但未赋值时变量的值:声明但未赋值时变量的值:数值型变量初始化为数值型变量初始化为数值型变量初始化为数值型变量初始化为0 0 0 0;字符型变量为零长度字符串;字符型变量为零长度字符串;字符型变量为零长度字符串;字符型变量为零长度字符串;变体型变量初始化为变体型变量初始化为变体型变量初
36、始化为变体型变量初始化为 EmptyEmptyEmptyEmpty。3 3 3 3变量的作用域变量的作用域变量的作用域变量的作用域变量的作用域:变量在程序中生存和使用的范围。变量的作用域:变量在程序中生存和使用的范围。变量定义时的位置不同,其作用域也不同。变量定义时的位置不同,其作用域也不同。依据作用域将依据作用域将变量分为变量分为变量分为变量分为3 3 3 3类:类:类:类:(1)(1)局部变量局部变量局部变量局部变量 在子过程或函数过程中定义的变量,或者不用在子过程或函数过程中定义的变量,或者不用DimDimAsAs而直接使用的变量而直接使用的变量.。不同的过程中可以定义同名的变量不同的过
37、程中可以定义同名的变量不同的过程中可以定义同名的变量不同的过程中可以定义同名的变量。(2)(2)模块变量模块变量模块变量模块变量 在模块的开始位置、所有过程外面定义的变量,运行在模块的开始位置、所有过程外面定义的变量,运行时模块所包含的所有子过程和函数中都可以使用该变量。时模块所包含的所有子过程和函数中都可以使用该变量。(3)(3)全局变量全局变量全局变量全局变量 在标准模块中所有过程之外的起始位置定义的变量。在标准模块中所有过程之外的起始位置定义的变量。全局变量的定义:全局变量的定义:全局变量的定义:全局变量的定义:Public Public Public Public 变量变量变量变量 A
38、s As As As 数据类型数据类型数据类型数据类型 在所有类模块和标准模块中都可以使用该变量。在所有类模块和标准模块中都可以使用该变量。局部变量与静态变量比较示例局部变量与静态变量比较示例局部变量与静态变量比较示例局部变量与静态变量比较示例:建立一个标准模块建立一个标准模块建立一个标准模块建立一个标准模块,其代码如下其代码如下其代码如下其代码如下:Private Sub prg1()Static a As Integer Dim b As Integer a=a+1 b=b+1 Debug.Print a=;a,b=;bEnd Sub4 4 4 4数据库对象变量数据库对象变量数据库对象变量
39、数据库对象变量数据库对象名:数据库对象名:数据库对象名:数据库对象名:数据库引擎,参数据库引擎,参数据库引擎,参数据库引擎,参见第见第见第见第17171717张幻灯片张幻灯片张幻灯片张幻灯片ACCESS ACCESS ACCESS ACCESS 对象的引用对象的引用对象的引用对象的引用 AccessAccess中的对象或属性,可在中的对象或属性,可在VBAVBA程序代码中作为变量来程序代码中作为变量来引用。引用。窗体对象的引用格式如下:窗体对象的引用格式如下:Forms!Forms!窗体名称窗体名称窗体名称窗体名称!控件名称控件名称控件名称控件名称.属性名称属性名称属性名称属性名称 报表对象的
40、引用格式如下:报表对象的引用格式如下:ReponsRepons!报表名称报表名称报表名称报表名称!控件名称控件名称控件名称控件名称.属性名称属性名称属性名称属性名称 如果省略了属性名称,则表示控件的基本属性。如果省略了属性名称,则表示控件的基本属性。例如,设置例如,设置“学生基本情况学生基本情况”窗体中窗体中“学号学号”文本框的属性,文本框的属性,代代码表示如下:码表示如下:Forms!Forms!学生基本情况学生基本情况学生基本情况学生基本情况!学号学号学号学号=”070501”=”070501”等价于:等价于:Forms!Forms!学生基本情况学生基本情况学生基本情况学生基本情况!学号学
41、号学号学号.Value=”070501”.Value=”070501”当需要多次引用对象时当需要多次引用对象时,下面这样引用就方便多了:下面这样引用就方便多了:先定义一个控件变量,如:先定义一个控件变量,如:DimDimtxtNametxtNameASControlASControl 再为该变量赋值:再为该变量赋值:SetSettxtNametxtName=Forms!=Forms!学生基本情况学生基本情况学生基本情况学生基本情况!学号学号学号学号 下面就可以方便地引用学号这个对象了:下面就可以方便地引用学号这个对象了:txtNametxtName=”070501”=”070501”四、数组四
42、、数组四、数组四、数组同类型变量的有序组合同类型变量的有序组合同类型变量的有序组合同类型变量的有序组合。数组在内存中占用连续一片内存区域。数组中每一个数组在内存中占用连续一片内存区域。数组中每一个变量称为数组元素,数组元素可以通过其下标来访问,变量称为数组元素,数组元素可以通过其下标来访问,数组数组数组数组下标默认从下标默认从下标默认从下标默认从0 0开始。开始。开始。开始。数组的定义:数组的定义:数组的定义:数组的定义:定义一:定义一:DimbAge(9)AsByteDimbAge(9)AsByte 定义了一个定义了一个ByteByte型数组,含有型数组,含有1010个元素:个元素:bAge
43、(0bAge(0bAge(9)bAge(9)。定义二定义二 DimDimbAgebAge(3to5)AsByte(3to5)AsByte bAgebAge数组只有数组只有3 3个元素:个元素:bAge(3)bAge(4)bAge(5)bAge(3)bAge(4)bAge(5)数组的使用:数组的使用:数组的使用:数组的使用:数组元素可以象普通变量一样使用,既可以存储数据,也数组元素可以象普通变量一样使用,既可以存储数据,也可以参加表达式计算:可以参加表达式计算:bAge(3)=21bAge(3)=21为为bAge(3)bAge(3)元素赋值元素赋值 bAge(4)=bAge(3)*5 bAge(
44、4)=bAge(3)*5 参加计算参加计算例例例例:Dimmark(1to100)AsIntegerDimmark(1to100)AsInteger例:例:例:例:Dima(-1to3)AsIntegerDima(-1to3)AsInteger声明一维数组声明一维数组声明一维数组声明一维数组a a,包含了包含了包含了包含了5 5个整型元素个整型元素个整型元素个整型元素a(-1)a(-1)、a(0)a(0)、a(1)a(1)、a(2)a(2)、a(3)a(3);例如:例如:例如:例如:Dima(2,3)AsSingleDima(2,3)AsSingle二维数组在内存的存放顺序是二维数组在内存的存
45、放顺序是二维数组在内存的存放顺序是二维数组在内存的存放顺序是“先行后列先行后列先行后列先行后列”。数组数组数组数组a a的各元素在内存中的存放顺序是:的各元素在内存中的存放顺序是:的各元素在内存中的存放顺序是:的各元素在内存中的存放顺序是:a(0,0)a(0,1)a(0,2)a(0,3)a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(1,3)a(1,0)a(1,1)a(1,2)a(1,3)a(2,0)a(2,1)a(2,2)a(2,3)a(2,0)a(2,1)a(2,2)a(2,3)例:例:例:例:DimDimlArraylArray(0To3(0To3
46、,0To4)AsLong0To4)AsLong共有共有共有共有 4545个元素等价于个元素等价于个元素等价于个元素等价于:DimlArray(3:DimlArray(3,4)AsLong4)AsLong 动态数组:动态数组:动态数组:动态数组:在声明数组时未给出数组的大小在声明数组时未给出数组的大小在声明数组时未给出数组的大小在声明数组时未给出数组的大小(省略括号中的下标省略括号中的下标省略括号中的下标省略括号中的下标),当要使用它时,随时用当要使用它时,随时用当要使用它时,随时用当要使用它时,随时用ReDimReDim语句语句语句语句重新指出数组大小。重新指出数组大小。重新指出数组大小。重新
47、指出数组大小。形式如下:形式如下:形式如下:形式如下:ReDimReDim 数组名数组名数组名数组名(下标下标下标下标,下标,下标,下标,下标2)As2)As类型类型类型类型 例:例:例:例:PrivatePrivateSubS1()SubS1()Dimx()AsSingleDimx()AsSinglen=n=InputboxInputbox(“(“输入输入输入输入n”n”)ReDimReDimx(n)x(n)EndSubEndSub五、函数五、函数五、函数五、函数函数的使用格式为:函数名函数的使用格式为:函数名(参数参数,)如:如:Right(“abcdef”,2)如:如:Left(山东交通
48、学院山东交通学院,2)如:如:year(date()如:如:m=int(rnd*100)+1产生产生1个个1,100上的随机整上的随机整数数n=int(rnd*90)+10 产生产生1个个10,99上的随机整数上的随机整数 六、运算符与表达式六、运算符与表达式六、运算符与表达式六、运算符与表达式表达式:用运算符或圆括号将常量、变量和函数连接起来的表达式:用运算符或圆括号将常量、变量和函数连接起来的 有意义的式子。有意义的式子。VBAVBA中有:算术运算符中有:算术运算符 关系运算符、关系运算符、逻辑运算符、逻辑运算符、连接运算符连接运算符 对象运算符。对象运算符。1 1 1 1算术运算符与算术
49、表达式算术运算符与算术表达式算术运算符与算术表达式算术运算符与算术表达式算术运算符:算术运算符:乘幂乘幂“”乘法乘法“*”“*”、除法、除法“”整数除法整数除法“”求模求模”Mod”Mod”加法加法“+”+”、减法、减法“”。特别说明:特别说明:整数除法运算符整数除法运算符“”的两个操作数如果有小数部分,的两个操作数如果有小数部分,系系统会先取整后再运算,并舍去结果中的小数。统会先取整后再运算,并舍去结果中的小数。例如:例如:10103 3的结果是的结果是3 3 10.2 10.24.84.8的结果是的结果是2 2。求模运算符求模运算符“Mod”Mod”的两个操作数如果有小数,系统会先的两个操
50、作数如果有小数,系统会先四四舍五入将其变成整数后再运算,结果为舍五入将其变成整数后再运算,结果为余数余数余数余数,其符号与被除,其符号与被除数相同。数相同。例如:例如:10 Mod 4 10 Mod 4 的结果是的结果是 2 2 12 Mod -5 12 Mod -5 的结果是的结果是 2 2 -12.8 Mod 4 -12.8 Mod 4 的结果是的结果是 -1-1。2 2 2 2关系运算符关系表达式关系运算符关系表达式关系运算符关系表达式关系运算符关系表达式 “=”=”=”=”、“”、“”、“=”=”=”=”、“”、“=”=”=”aaaa 的结果是的结果是 TrueTrue。关系表达式关系