版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1 模块和模块和VBA程序设计程序设计 2 本章要求:本章要求: 1、了解、了解VBA编程环境;编程环境; 2、掌握、掌握VBA编程基础:常量,变量,表达式;编程基础:常量,变量,表达式; 3、掌握顺序控制,选择控制,循环控制、掌握顺序控制,选择控制,循环控制 4、了解、了解VBA模块模块 本章要点:本章要点: 掌握顺序控制,选择控制,循环控制掌握顺序控制,选择控制,循环控制 学时安排:学时安排: 6 6学时学时( (理论)理论)+6+6学时学时( (实践)实践) 第第8章章 模块和模块和VBA程序设计程序设计 第1页/共138页 3 VBA程序设计基础 模块的概念 常用标准函数 VBA
2、的程序结构 VBA的数据库编程 过程调用和参数传递 第2页/共138页 4 在Access系统中,把宏、窗体和报表等对象结 合起来,不用编写程序代码就可以建立功能较完善 的数据库管理系统。但宏的功能是有局限性的,它 只能处理一些简单的操作,如果要实现功能强大的 数据管理,以及灵活的控制功能,宏对象就无能为 力了。这时,就需要编写程序模块来实现上述的功 能。本章介绍模块的概念和用来建立模块的VBA语 言的基础知识。 第3页/共138页 5 模块对象是Access系统中所包含的7种对象之一,模块和宏的使用有一些相似之处。宏是由系统自动生成的程序模块,而模块对象是用VBA语言编写的,VBA是Offi
3、ce软件中内置的编程语言,语法与Visual Basic兼容。 1.模块的分类 在Access中,模块分为类模块和标准模块两种类型。 (1)类模块 类模块包括窗体模块和报表模块,它们与各自的 窗体 或报表相关联。 窗体模块中的事件过程的代码用于响应窗体或窗体 上控件的触发事件。报表模块中的事件过程的代码用于 响应报表或报表上控件的触发事件。 第4页/共138页 6 在窗体或报表的设计视图中,可以使用下面方法打开模块代码的编辑窗口: l 工具栏上的“代码”按钮。 l 为窗体或报表创建事件过程时,系统会自动打开模块代码编辑窗口。 窗体模块和报表模块的作用范围在其所属窗体或报表内部,并随着窗体或报表
4、的打开而开始,随着窗体或报表的关闭而结束。 类模块也可以不依赖窗体或报表而单独存在 第5页/共138页 7 (2)标准模块 标准模块包含与任何其他对象都无关的常规过程 ,以及可以从数据库任何位置运行的经常使用的过程 。标准模块和某个特定对象无关的类模块的主要区别 在于其范围和生命周期。 标准模块显示在数据库窗口的“模块”对象中, 窗体、报表和标准模块也都显示在“对象浏览器”对 话框中。“对象浏览器”对话框用于显示与当前项目 有关和引用对象库中对象、属性、方法和常数的信息 。 第6页/共138页 8 模块由声明区域和过程两部分组成,声明区域用来声明模块使用的变量,过程是模块的组成单元。过程分为两
5、种类型:子过程(Sub)和函数过程(Function)。 (1)子过程 子过程又称为Sub过程,可以执行一系列操作,无返回值。定义格式如下: Sub 过程名 程序代码 End Sub 可以引用子过程的名称来调用该子过程。在过程名前加上关键字Call,可以显式调用一个子过程。 8.1 模块的概念模块的概念 2模块的组成模块的组成 第7页/共138页 9 8.1 模块的概念模块的概念 任意两个数的和 两个3的和 两个1的和并且能调用show2 第8页/共138页 10 例例:通过窗体事件也可调用子过程通过窗体事件也可调用子过程 8.1 模块的概念模块的概念 第9页/共138页 11 8.1 模块的
6、概念模块的概念 第10页/共138页 12 (2)函数过程 函数过程又称为Funtion过程,可以执行一系列操作,有返回值。定义格式如下: Function 过程名 程序代码 End Function 调用函数过程时,需要直接引用函数过程的名称,而不能使用不能使用Call来调用执行。 8.1 模块的概念模块的概念 2模块的组成模块的组成 第11页/共138页 13 8.1 模块的概念模块的概念 调用过程调用过程: 第12页/共138页 14 例例:通过窗体事件也可调用函数通过窗体事件也可调用函数 第13页/共138页 15 3将宏转换为模块将宏转换为模块 8.1 模块的概念模块的概念 根据要转
7、换宏的类型不同,转换操作有两种情况,一种是转换窗体或报表中的宏,另一种是转换不属于任何窗体和报表的全局宏。 (1)转换窗体或报表中的宏 l 在设计视图中打开窗体。 l 执行“工具/宏/将窗体的宏转换为Visual Basic代码”命令,屏幕显示“转换窗体宏”对话框。 第14页/共138页 16 将全局宏转换为模块的具体步骤说明如下: 在数据库窗口中,单击“宏”对象,选择要转换的宏。 执行“文件”菜单中的“另存为”命令,打开“另存为”对话框 (2)转换全局宏 8.1 模块的概念模块的概念 在对话框的“保存类型”下拉列表框中,选择“模块”列表项,然后单击“确定”按钮,屏幕显示“转换宏”对话 框。
8、3将宏转换为模块将宏转换为模块 第15页/共138页 17 VBA是Visual Basic for Application的缩写,是 微软Office系列软件的内置编程语言,与Visual Basic 具有相同的语言功能。 在VBA中,程序是由过程组成的,过程由根据VBA 规则书写的指令组成。一个程序包括语句、变量、运 算符、函数、数据库对象、事件等基本要素。 在Access程序设计中,当某些操作不能用其他 Access对象实现或实现起来很困难时,就可以利用 VBA语言编写代码,完成这些复杂任务。 8.2 VBA程序设计基础程序设计基础 第16页/共138页 18 8.2.1 面向对象程序设
9、计的基本概念面向对象程序设计的基本概念 Access内嵌的VBA编程语言,采用的是目前主 流的面向对象编程机制和可视化编程环境,同时也 提供了访问数据库和操作数据表中记录的基本方法 。 8.2 VBA程序设计基础程序设计基础 1对象和类对象和类 Access中的表、查询、窗体、报表、页、宏和模块等都是数据库的对象,而控件是窗体或报表中的对象。每个不同的对象都通过不同的属性相互区分。对象的属性按其类别会有所不同,而且同一对象的不同实例属性构成也可能有差异。 第17页/共138页 19 具有相同属性和方法的对象就组成了类,工具箱 中的每个控件就是一个类,而在窗体或报表中创建的 具体控件则是这个类的
10、对象。而属于同一个类的两个 对象是通过属性值来区分的 。 8.2 VBA程序设计基础程序设计基础 1对象和类对象和类 Access中的表、查询、窗体、报表、页、宏和模块对象也是类,称为对象类。Access数据库窗口左侧显示的就是数据库的对象类,单击某个对象类可以打开相应对象窗口。 对象除了属性以外还有方法。对象的方法就 是对象可以执行的行为。 第18页/共138页 20 属性、方法和事件构成了对象的基本要素。 属性属性描述了对象的性质 例如,文本框控件对象中的名称、字体的相关属性等。 引用方式为引用方式为:对象.属性 例如:Label6.Caption = area(x) 8.2 VBA程序设
11、计基础程序设计基础 2属性、方法和事件属性、方法和事件 方法方法描述了对象的行为,即在某个对象上执行的一个过程, 例如, 打开和关闭报表对象。 引用方式为引用方式为:对象.方法 例如: Text1.SetFocus 事件事件是由Access定义好的,可以被窗体、报表以及窗体或报表上的控件等对象所识别的动作 。 如单击,失去焦点. 事件 方法 属性 第19页/共138页 21 使用宏对象来设置事件属性。 为某个事件编写VBA代码过程,完成指定动作,这种代码过程称为事件过程或事件响应代码。 (对象事件,参考书P199-200) 8.2 VBA程序设计基础程序设计基础 在Access数据库系统里,可
12、以通过以下两种方式来处理窗体、报表或控件的事件响应。 第20页/共138页 22 8.2.2 VBE编程环境编程环境 VBE是Visual Basic Editor的缩写,是Access提供的一个编程环境。 VBE窗口主要由标准工具栏、工程窗口、属性窗口和代码窗口4部分组成. 8.2 VBA程序设计基础程序设计基础 第21页/共138页 23 按钮按钮按钮名称按钮名称作用作用 Access视图视图切换切换Access数据库窗口数据库窗口 插入模块插入模块用于插入新模块用于插入新模块 运行子过程用户窗体运行子过程用户窗体运行模块程序运行模块程序 中断运行中断运行中断正在运行的程序中断正在运行的程
13、序 终止运行重新设计终止运行重新设计结束正在运行的程序,重新进结束正在运行的程序,重新进 入模块设计状态入模块设计状态 设计模式设计模式设计模式和非设计模式切换设计模式和非设计模式切换 工程项目管理器工程项目管理器打开工程项目管理器窗口打开工程项目管理器窗口 属性窗体属性窗体打开属性窗体打开属性窗体 对象浏览器对象浏览器打开对象浏览器窗口打开对象浏览器窗口 8.2 VBA程序设计基础程序设计基础 第22页/共138页 24 8.2 VBA程序设计基础程序设计基础 编程步骤编程步骤: 1创建用户界面创建用户界面 创建VBA程序的第一步是创建用户界面,用户界面的基础是窗体以及窗 体上的控件。 2设
14、置对象属性设置对象属性 属性的设置可以通过两种方法实现。一是在窗体设计视图中,通过对 象的属性表设置;二是通过程序代码设置。 3对象事件过程的编写对象事件过程的编写 建了用户界面并为每个对象设置了属性后,重点考虑的就是需要操作 哪个对象,激活什么事件,事件代码如何编写。 4运行和调试运行和调试 事件过程编写好后,即可运行程序。若在程序运行过程中出错,系统 会显示出错信息,这时应针对出错处对事件代码进行修改,然后再运行 ,直到正确为止。 5保存窗体保存窗体 第23页/共138页 25 8.2.3 VBA的基本数据类型的基本数据类型 VBA支持多种数据类型,可以使用类型说明标点符 号来定义数据类型
15、,还可以使用类型说明字符来 定义数据类型. 8.2 VBA程序设计基础程序设计基础 1数据类型数据类型 第24页/共138页 26 (2). 长整形 Long 类型申明符为“ Fix(x)返回数据的整数部分返回数据的整数部分 Round(x,n) 返回有返回有n位小数的位小数的x,n位以后的数四舍五入位以后的数四舍五入 第51页/共138页 53 8.3 常用标准函数常用标准函数 第52页/共138页 54 字符串函数完成字符串处理功能。 (1)字符串检索函数 函数格式:InStr(Start, Strl,Str2 ,Compare) 函数功能:检索子字符串Str2在字符串Strl中最早出现的
16、位置,返回整型数。 8.3 常用标准函数常用标准函数 2字符串函数字符串函数 例8-21:已知Strl=“123456”,Str2=“56”。 s=InStr(strl,str2) 返回5 s=InStr(3, “aBCdAb”, “a”,1) 返回5 第53页/共138页 55 (2)字符串长度检测函数 函数格式:Len(字符串表达式或变量名) 函数功能:返回字符串中所包含字符个数。 参数说明:对于定长字符串变量,其长度是定义时的长度,和字符串实际值无关。 (3)字符串截取函数 函数格式:Left(字符串表达式,N) Right(字符串表达式,N) Mid(字符串表达式,N1,N2) 8.3
17、 常用标准函数常用标准函数 2字符串函数字符串函数 第54页/共138页 56 (4)生成空格字符函数 函数格式:Space(数值表达式) 函数功能:Space函数可以返回数值表达式的值指定的空格字符数。 8.3 常用标准函数常用标准函数 2字符串函数字符串函数 5)大小写转换函数 函数格式:Ucase(字符串表达式) Lcase(字符串表达式) 函数功能:Ucase函数可以将字符串中小写字母转成大写字母。 Lcase函数可以将字符串中大写字母转成小写字母。 第55页/共138页 57 (6)删除空格函数 函数格式:LTrim(字符串表达式) RTrim(字符串表达式) Trim(字符串表达式
18、) 函数功能:LTrim函数可以删除字符串的开始空格。RTrim函数可以删除字符串的尾部空格。Trim函数可以删除字符串的开始和尾部空格。 8.3 常用标准函数常用标准函数 2字符串函数字符串函数 第56页/共138页 58 日期/时间函数的功能是处理日期和时间。主要包括以下函数: (1)获取系统日期和时间函数 函数格式:Date Time Now 函数功能:Date函数可以返回当前系统日期。Time函数可以返回当前系统时间。Now函数可以返回当前系统日期和时间。 8.3 常用标准函数常用标准函数 3日期日期/时间函数时间函数 第57页/共138页 59 (2)截取日期分量函数 函数格式:Ye
19、ar(日期表达式) Month(日期表达式) Day(日期表达式) Weekday(日期表达式,W) 函数功能:Year函数可以返回日期表达式年份的整数。Month函数可以返回日期表达式月份的整数。Day函数可以返回日期表达式日期的整数。Weekday函数可以返回17的整数,表示星期。 参数说明:Weekday函数中,参数W可以指定一个星期的第一天是星期几。缺省时周日是一个星期的第一天,W的值为vbSunday或1。 8.3 常用标准函数常用标准函数 3日期日期/时间函数时间函数 第58页/共138页 60 (3)截取时间分量函数 函数格式:Hour(时间表达式) Minute(时间表达式)
20、Second(时间表达式) 函数功能:Hour函数可以返回时间表达式的小时数(0-23)。Minute函数可以返回时间表达式的分钟数(0-59)。Second函数可以返回时间表达式的秒数(059)。 8.3 常用标准函数常用标准函数 3日期日期/时间函数时间函数 第59页/共138页 61 (1)字符串转换字符代码函数 函数格式:Asc(字符串表达式) 函数功能:Asc函数可以返回字符串首字符的ASCII值。 (2)字符代码转换字符函数 函数格式:Chr(字符代码) 函数功能:Chr函数可以返回与字符代码相关的字符。 8.3 常用标准函数常用标准函数 4类型转换函数类型转换函数 类型转换函数可
21、以将数据类型转换成指定类型。 第60页/共138页 62 (4)字符串转换成数字函数 函数格式:Val(字符串表达式) 函数功能:Val函数可以将数字字符串转换成数值型数字。 参数说明:数字字符串转换时可自动将字符串中的空格、制表符和换行符去掉,当遇到第一个不能识别的字符时,停止转换。 8.3 常用标准函数常用标准函数 (3)数字转换成字符串函数 函数格式:Str(数值表达式) 函数功能:Str函数可以将数值表达式值转换成字符串。 参数说明:数值表达式的值为正时,返回的字符串将包含一个前导空格。 4类型转换函数类型转换函数 第61页/共138页 63 5验证函数验证函数 Access提供了一些
22、对数据进行校验的函数 8.3 常用标准函数常用标准函数 第62页/共138页 64 输入框函数用于在一个对话框中显示提示,等待用户输入正文并按下按钮,然后返回包含文本框内容的数据信息。 函数格式: InputBox(Prompt,Titlel(,Default,Xpos,Ypos,Helpfile,Context) 8.3 常用标准函数常用标准函数 6输入框函数输入框函数 例例:Private Sub Command1_Click() q1 = InputBox(“请输入您的身份证号请输入您的身份证号”,“输入身份证号输入身份证号”,“19781201”) msgbox “你的身份证号是你的身
23、份证号是:” & q1 End Sub提示提示 缺缺 省省 标标 题题 提示提示 缺省缺省 标题标题 第63页/共138页 65 消息框用于在对话框中显示消息,等待用户单击按钮,并返回一个整型值指示用户单击了哪一个按钮。 函数格式: MsgBox(Prompt,Buttons,Title,Helpfile,Context) 8.3 常用标准函数常用标准函数 7消息框函数消息框函数 第64页/共138页 66 8.3 常用标准函数常用标准函数 函数实验方法:在VBE环境中打开”视图/立即窗口” 第65页/共138页 67 一个程序由多条不同功能的语句组成,每条语句能够完成某个特定的操作。 在VB
24、A程序中,按照功能的不同将程序语句分为声明语句和执行语句两类。声明语句用于定义变量、常量或过程。执行语句用于执行赋值操作、调用过程和实现各种流程控制。 执行语句可以根据流程的不同分为顺序结构、条件结构和循环结构3种。顺序结构是按照语句的先后顺序依次执行。条件结构是根据条件选择执行不同的分支语句,又称为选择结构。循环结构是根据某个条件重复执行某一段程序语句。 8.4 VBA的程序结构的程序结构 8.4.1 语句语句 第66页/共138页 68 (1)Rem语句 语句格式:Rem 注释内容 (2)英文单引号“” 语句格式:注释内容 注释可以添加到程序模块的任何位置,并且默认以绿色文本显示。 8.4
25、 VBA的程序结构的程序结构 8.4.1 语句语句 1注释语句注释语句 声明语句用于命名和定义常量、变量、数组和过程,同时也定义了它们的生命周期与作用范围。 2声明语句声明语句 第67页/共138页 69 赋值语句是为变量指定一个值或表达式。 格式:Let 变量名=值或表达式 例如:x=y x=x+1 label0.caption=“总成绩” Text11=“欢迎使用Access” 8.4 VBA的程序结构的程序结构 3赋值语句赋值语句 4GoTo语句语句 GoTo语句和语句标号一起用于实现无条件跳转。语句格式为: GoTo 语句标号 8.4.1 语句语句 第68页/共138页 70 8.4
26、VBA的程序结构的程序结构 8.4.1 语句语句 例:例:计算鸡兔同笼 分析:h代表头, F代表脚,c代表鸡. R代表兔子 R+C=H 2C+4R=F 2 -得: R=(F-2H)/2 C=H-R 第69页/共138页 71 8.4 VBA的程序结构的程序结构 8.4.1 语句语句 例:例:计算鸡兔同笼 Private Sub Command8_Click() Dim h%, f%, c!, r! h = Text0 f = Text2 r = (f - 2 * h) / 2 c = h - r Text4 = c Text6 = r End Sub 第70页/共138页 72 条件语句可以根
27、据条件表达式的值来选择程序运行的分支语句,主要有以下一些结构: 8.4 VBA的程序结构的程序结构 8.4.2 条件语句条件语句 (1)单分支If语句 格式: If 条件表达式 Then 语句序列 End If 当程序执行到这种格式的If语句时,如果条件表达式为真,将执行Then后面的语句序列,如果条件表达式为假,程序将跳过语句序列而直接执行End If后面的语句。 1If语句语句 第71页/共138页 73 8.4 VBA的程序结构的程序结构 1If语句语句 8.4.2 条件语句条件语句 第72页/共138页 74 (2)双分支If语句 格式: If 条件表达式 Then 语句序列1 Els
28、e 语句序列2 End If 当程序执行到这种格式的If语句时,如果条件表达式为真,将执行Then和Else之间的语句序列1,如果条件表达式为假,程序将执行Else和End If之间的语句序列。 8.4 VBA的程序结构的程序结构 8.4.2 条件语句条件语句 1If语句语句 第73页/共138页 75 8.4 VBA的程序结构的程序结构 第74页/共138页 76 8.4 VBA的程序结构的程序结构 例8-38:双分支If语句举例。 第75页/共138页 77 (3)嵌套的If语句 格式: If 条件表达式1 Then 语句序列1 Else If 条件表达式2 Then 语句序列2 Else
29、 语句序列3 End If End If 8.4 VBA的程序结构的程序结构 1If语句语句 8.4.2 条件语句条件语句 格式: If 条件表达式1 Then 语句序列1 ElseIf 条件表达式2 Then 语句序列2 Elseif 条件表达式3 Then 语句序列3 else 语句序列n End If End If 第76页/共138页 78 8.4 VBA的程序结构的程序结构 例例8-39:使用使用If语句嵌套结构计算表达式语句嵌套结构计算表达式y的值。的值。 (x)1/2 x=0 Y= 0 x=0 IxI x0 Then y=Sqr(x) Else if x=0 then y=0 E
30、lse y=Abs(x) endif End If Msgbox y 第77页/共138页 79 当条件选项较多时,Select语句就可以解决多重嵌套控制结构这类问题。 格式: Select Case 表达式 Case 表达式1 语句序列1 Case 表达式2 语句序列2 Case 表达式 n 语句序列n Case Else 语句序列n+1 End Select 8.4 VBA的程序结构的程序结构 8.4.2 条件语句条件语句 2Select语句语句 第78页/共138页 80 Case表达式可以是下列4种格式之一: l 单一数值,如Case 2。 l 一行并列的数值,数值之间用逗号隔开,如C
31、ase 5, 6,7 l 用关键字To分隔开两个数值或表达式之间的范围, 如Case 1 to 10 l 用关键字Is连接关系运算符,如=、=,后面跟变量或具体的值,Is=15。 Case语句是依次测试的,并执行第一个符合Case条件的相关的程序代码,即使再有其他符合条件的分支也不会再执行。如果没有找到符合条件的,并且有Case Else语句,就会执行该语句后面的程序代码。 8.4 VBA的程序结构的程序结构 2Select语句语句 第79页/共138页 81 8.4 VBA的程序结构的程序结构 2Select语句语句 Dim str$, x$ x = InputBox(x) Select C
32、ase x Case A To Z str = UpperCase Case a To z str = LowerCase Case 0 To 9 str = Number Case Else str = 其他符号 End Select MsgBox x & & str 第80页/共138页 82 8.4 VBA的程序结构的程序结构 2Select语句语句 Private Sub Command0_Click() Dim r!, G$ r = Text1 Select Case r Case Is = 90 G = 优秀 Case Is = 80 G = 良好 Case Is = 70 G =
33、 中等 Case Is = 60 G = 及格 Case Else G = 不及格 End Select Label5.Caption = r & 分 & 为 & G End sub 第81页/共138页 83 在VBA中,除了If和Select两种条件语句外,还有3个函数可以实现分支选择操作。 (1)IIf函数 函数格式:IIf(条件式,表达式1,表达式2) 函数功能:IIf函数根据“条件式”的值来决定函数返回值。如果“条件式”的值为真,函数返回“表达式1”的值,如果“条件式”值为假,函数返回“表达式2”的值。 例如: maxnum=iif (xy,x,y) 8.4 VBA的程序结构的程序结
34、构 3分支功能的函数分支功能的函数 8.4.2 条件语句条件语句 第82页/共138页 84 (2)Switch函数 函数格式:Switch(条件式1,表达式1,条件式2,表达式2 ,条件式n,表达式n) 函数功能:Switch函数根据“条件式1”、“条件式2”“条件式n”的值来决定函数返回值。条件式是由左至右进行计算判断的,在第一个相关的条件式为真时,将该表达式作为函数返回值。 例例8-41:8-41:使用该函数实现符号函数的功能 x=10 y=switch(x0,1,x=0,0,x max Then max = x End If Next i Label3.Caption = 最大数为:
35、& max End Sub 思考:如何求最大数 的位置? 第89页/共138页 91 (1)Do WhileLoop 功能:当条件式结果为真时,重复执行循环体。当条件式结果为假或执行到Exit Do时,结束循环。 语句格式: Do While 条件式 循环体 条件语句序列 Exit Do 结束条件语句序列 Loop 8.4 VBA的程序结构的程序结构 2DoLoop语句语句 8.4.3 循环语循环语 句句 第90页/共138页 92 8.4 VBA的程序结构的程序结构 2DoLoop语句语句 8.4.3 循环语循环语 句句 对比:使用ForNext语句计算1100之间数的和。 Dim i%,
36、sum% For i = l To 100 sum = sum + i Next i 第91页/共138页 93 (2)Do UntilLoop 语句功能:Do UntilLoop循环结构是当条件式值为假时,重复执行循环体。当条件式值为真,结束循环。 语句格式: Do Until 条件式 循环体 条件语句序列 Exit Do 结束条件语句序列 Loop 8.4 VBA的程序结构的程序结构 2DoLoop语句语句 8.4.3 循环语循环语 句句 第92页/共138页 94 例8-46:用用Do UntilDo UntilLoopLoop语句计算语句计算1 1100100之间数的和。之间数的和。
37、Dim i As Integer Dim Sum As Integer i=1 Do Until i100 Sum=Sum+i i=i+1 Loop 返返 回回 8.4 VBA的程序结构的程序结构 2DoLoop语句语句 8.4.3 循环语循环语 句句 对比:用Do WhileLoop语 句计算1100之间数的和。 Dim i As Integer Dim Sum As Integer i=1 Do While i av Then Txt2 = Txt2 & & a(I) End If Next I End Sub 第97页/共138页 99 8.2 VBA程序设计基础程序设计基础 4数组的使
38、用数组的使用 例:求波斐那契数列,已经数列第一二项的值,从第三项开始每一项的值等于前两项之和 Private Sub Command4_Click() Dim a(10) As Single a(1) = Text0 a(2) = Text1 For i = 3 To 10 a(i) = a(i - 1) + a(i - 2) Text3 = Text3 & “ & a(i) Next i End Sub 第98页/共138页 100 8.2 VBA程序设计基础程序设计基础 5循环嵌套的使用循环嵌套的使用 一个循环体内又包含了一个完整的循环结构称为循环的嵌套. For ii =1 To 10
39、For jj=1 To 20 Next ii Next jj For ii =1 To 10 For ii=1 To 20 Next ii Next ii For ii =1 To 10 For jj=1 To 20 Next jj Next ii For ii =1 To 10 Next ii For ii =1 To 10 Next ii 第99页/共138页 101 8.2 VBA程序设计基础程序设计基础 5循环嵌套的使用循环嵌套的使用 例例 : 百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。 设母鸡、公鸡、小
40、鸡各为x、y、z只,根据题目要求,列出方程为: x+y+=100 3x+2y+0.5z=100 第100页/共138页 102 8.2 VBA程序设计基础程序设计基础 5循环嵌套的使用循环嵌套的使用 例例 : 百元买百鸡问题 第101页/共138页 103 在VBA中,Access可以通过DoCmd对象调用系 统内部的方法来实现对数据库的操作,例如,打开 窗体、打开报表、打开查询和关闭这些对象等操作 。 DoCmd对象调用方法: DoCmd.方法名 参数表 8.5 DoCmd对象及常用的操作方法对象及常用的操作方法 方法方法功能功能示例示例 OpenForm打开窗体DoCmd.OpenForm
41、 ”学生信息” OpenReport打开报表DoCmd.OpenReport 学生成绩 ,acViewPreview OpenTable 打开表DoCmd. OpenTable 课程信息 Close关闭对象关闭对象DoCmd. close RunMacro运行宏运行宏DoCmd. RunMacro Macro1 第102页/共138页 104 8.5 DoCmd对象及常用的操作方法对象及常用的操作方法 例:创建如图所示窗体,单击按钮时,使用DoCmd对象分别打开“学生信息浏览”窗体、“Macro1”宏及“学生情况表01”报表。 第103页/共138页 105 (1)子过程的定义 子过程的定义格
42、式如下: Public | PrivateStatic Sub 子过程名( 形式参数) 子过程语句 Exit Sub 子过程语句 End Sub 8.6 过程调用和参数传递过程调用和参数传递 8.6.1 过程的定义和调用过程的定义和调用 1子过程的定义和调用子过程的定义和调用 第104页/共138页 106 (2)子过程的调用 子过程的调用有如下两种形式: Call 子过程名(实际参数) 子过程名实际参数 在调用子过程时使用的参数称为实际参数,将实际参数传递给形式参数。 8.6 过程调用和参数传递过程调用和参数传递 8.6.1 过程的定义和调用过程的定义和调用 1子过程的定义和调用子过程的定义
43、和调用 第105页/共138页 107 (1)函数过程的定义 使用Function语句定义一个函数过程,其定义格式如下: Public | PrivateStatic Function函数过程名(形式参数) As数据类型 函数过程语句 函数过程名=表达式 Exit Function 函数过程语句 函数过程名=表达式 End Function 8.6 过程调用和参数传递过程调用和参数传递 8.6.1 过程的定义和调用过程的定义和调用 2函数过程的定义和调用函数过程的定义和调用 第106页/共138页 108 过程定义时可以设置一个或多个形式参数,所以过程调用时可以向过程传递一个或多个参数,多个参
44、数之间用逗号分隔。 返返 回回 8.6 过程调用和参数传递过程调用和参数传递 8.6.2 参数传递参数传递 1形式参数的完整定义 OptionalByVal | ByRefParamArray VarName()As Type=DefaultValue 当含有形式参数的过程被调用时,主调过程中必须提供相应的实际参数,通过实际参数向形式参数传递数据。 2参数传递的方式 第107页/共138页 109 例例:阅读下面程序代码,分析程序运行结果 Private Sub Cmd1_Click() Dim x%, y% x = txt1 y = txt2 cscd x, y lbl1.Caption =
45、 x= & x lbl2.Caption = y= & y End Sub 子过程代码如下: Sub cscd(ByRef a As Integer, ByVal b As Integer) a = a + 10 b = b + 10 End Sub 。 8.6 过程调用和参数传递过程调用和参数传递 8.6.2 参数传递参数传递 第108页/共138页 110 变量定义的位置不同,则其作用的范围也不同, 这就是变量的作用域。 根据变量的作用域的不同,可以将变量分为局部 变量、模块变量和全局变量3类。 8.6 过程调用和参数传递过程调用和参数传递 8.6.3 变量作用域变量作用域 第109页/共
46、138页 111 局部变量 局部变量是指定义在模块过程内部的变量,在子 过程或函数过程中定义的或不用DimAs关键字定义 而直接使用的变量,这些都是局部变量,其作用的范 围是其所在的过程。 8.6 过程调用和参数传递过程调用和参数传递 8.6.3 变量作用域变量作用域 第110页/共138页 112 模块变量 模块变量是在模块的起始位置、所有过程之外定 义的变量。运行时在模块所包含的所有子过程和函数 过程中都可见,在该模块的所有过程中都可以使用该 变量,用DimAs关键字定义的变量就是模块变量。 8.6 过程调用和参数传递过程调用和参数传递 8.6.3 变量作用域变量作用域 第111页/共13
47、8页 113 全局变量 全局变量就是在标准模块的所有过程之外的起始 位置定义的变量,运行时在所有类模块和标准模块的 所有子过程与函数过程中都可见,在标准模块的变量 定义区域,用下面的语句定义全局变量: Public 全局变量名 As 数据类型 8.6 过程调用和参数传递过程调用和参数传递 8.6.3 变量作用域变量作用域 第112页/共138页 114 例例: :如窗体所示如窗体所示, ,有三个同名变量有三个同名变量, ,定义不用的作用域定义不用的作用域, ,观察其使用观察其使用 8.6 过程调用和参数传递过程调用和参数传递 8.6.3 变量作用域变量作用域 第113页/共138页 115 定
48、义变量的方法不同,变量的存在时间也不同,称为持续时间或生命周期。按照变量的生命周期,可以将局部变量分为动态局部变量和静态局部变量。 动态局部变量 动态局部变量是以DimAs语句说明的局部变量,每次子过程或函数过程被调用时,该变量会被释放。 静态局部变量 用Static关键字代替Dim来定义静态局部变量,该变量可以在过程的实例间保留局部变量的值。 8.6 过程调用和参数传递过程调用和参数传递 8.6.4 变量生命周期变量生命周期 第114页/共138页 116 例例:编一程序编一程序,利用局部变量统计单击窗体的次数利用局部变量统计单击窗体的次数 8.6 过程调用和参数传递过程调用和参数传递 8.
49、6.4 变量生命周期变量生命周期 第115页/共138页 117 例例:修改“系统登录”窗体,当用户名和密码3次输入不正确时, 关闭该登录窗体 8.6 过程调用和参数传递过程调用和参数传递 8.6.4 变量生命周期变量生命周期Private Sub cmdstart_Click() Static n As Integer n = n + 1 If (Forms!系统登录.userpwd = Forms!系统登录.密码) Then DoCmd.Close , DoCmd.OpenForm 学生管理系统, acNormal, , , , acNormal Else If n = 3 Then Ms
50、gBox 登录次数已超过3次,将退出系统!, vbCritical DoCmd.Close Else Beep MsgBox 口令有误, vbCritical, 口令有误 Me.userpwd = 口令清空 Me.userpwd.SetFocus 将光标定位在口令文本框,准备重新 输入 End If End If 第116页/共138页 118 要想快速、有效地管理好数据,开发出更具实用价值的Access数据库应用程序,应当了解和掌握VBA的数据库编程方法。 8.7 VBA的数据库编程的数据库编程 在VBA中主要提供了3种数据库访问接口: (1)开放数据库互联应用编程接口 (2)数据访问对象D
51、AO (3)Active数据对象 8.7.1 数据库引擎及其接口数据库引擎及其接口 第117页/共138页 119 数据访问对象(DAO)是VBA提供的一种数据访问接口。包括数据库创建、表和查询的定义等工具,借助VBA代码可以灵活地控制数据访问的各种操作。 DAO模型是一个复杂的可编程数据关联对象的层次,DAO的对象层次说明如下: 8.7 VBA的数据库编程的数据库编程 8.7.2 数据访问对象数据访问对象(DAO) 1DAO模型结构模型结构 第118页/共138页 120 8.7 VBA的数据库编程的数据库编程 第119页/共138页 121 要想使用DAO访问数据库的对象,首先应该增加一个
52、对DAO库的引用。其引用设置方式为: (1)先进入VBA编程环境。 (2)执行“工具/引用”命令,在对话框的,单击“Microsoft DA03.6 object Library”列表项前面的复选框。 (4)单击“确定”按钮,完成设置。 8.7 VBA的数据库编程的数据库编程 2设置设置DAO库的引用库的引用 第120页/共138页 122 通过DAO编程实现据库访问时,首先要创建对象变量,然后通过对象方法和属性来进行操作。下面给出数据库操作一般语句和步骤: (1)创建对象变量)创建对象变量 定义工作区对象变量:Dim ws As Workspace 定义数据库对象变量:Dim db As D
53、atabase 定义记录集对象变量:Dim rs As RecordSet (2)通过)通过Set语句设置各个对象变量的值语句设置各个对象变量的值 Set ws=DBEngine.Workspace(0) Set db=ws.OpenDatabase(数据库文件名) Set rs=db.OpenRecordSet(表名、查询名或SQL语句) 8.7 VBA的数据库编程的数据库编程 3利用利用DAO访问数据库访问数据库 第121页/共138页 123 (3)通过对象的方法和属性进行操作)通过对象的方法和属性进行操作 通常使用循环结构处理记录集中的每一条记录。 Do While Not rs.EOF Rs.MoveNext Loop (4)操作的收尾工作)操作的收尾工作 rs.close cn.close Set rs=Nothing Set cn=Nothing 8.7 VBA的数据库编程的数据库编程 3利用利用DAO访问数据库访问数据库 第122页/共138页 124 3利用利用DAO访问数据库访问数据库 例例:例用例用DAO编程编程,完成对表记录的添加、查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年重点新材料首批次应用综合保险投保操作手册
- 2026年保持高压态势不断提高反腐败穿透力实施路径
- 京津冀首届航空职业技能大赛报名表(学生组)
- 2026年多元主体协作共治模式管理者教师学生共同参与决策
- 2026年蚂蚁阿福等AI医疗模型C端商业化空间与运营模式
- 2026年老年人能力评估确定居家适老化改造需求操作流程
- 2025年临床执业医师《妇产科学》考核卷
- 红色正月十五闹元宵节日活动策划
- 京东物流运营年度总结报告
- 建筑企业工程部专员的工作计划
- 2026湖南医药发展投资集团有限公司所属企业招聘72人(第一季度)笔试参考题库及答案解析
- 2026年六安职业技术学院单招职业适应性考试题库完整答案详解
- 2025年特种设备安全管理人员A证全国考试题库(含答案)
- 车险初级核保试题附答案
- 公司档案管理制度与流程
- 2025年洛阳文化旅游职业学院单招职业适应性测试题库附答案解析
- 百奥赛图公司深度报告:高速成长的生物技术平台乘风破浪未来可期
- 2026年春季第二学期德育主题活动安排
- 2026年苏州工业职业技术学院高职单招职业适应性考试参考题库及答案详解
- JJF1033-2023计量标准考核规范
- 客车空调技术教学课件汇总完整版电子教案全书整套课件幻灯片(最新)
评论
0/150
提交评论