版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十一章模块与VBA编程,本章主要内容 11.1 VBA与模块的概念 11.2 VBA编程基础 11.3 VBA的程序结构 11.4 过程定义和调用 11.5 VBA的数据库编程,11.1 模块与VBA的概念 一、模块的概念 模块是Access数据库中的一个对象,它存放着用VBA语 言( Visual Basic for Applications )编写的并能完成所有ACCESS功能的程序代码。 二、模块的分类 1标准模块(文件扩展名为 .bas) 标准模块作用是合理组织程序或控制程序执行流程,纯 代码,不与任何对象(窗体、报表、控件等)相关联,可放 置在数据库中的任何位置,可以被工程内数据库
2、对象调用。 2类模块(文件扩展名为 .cls) 类模块是含有类定义的模块,包括其属性、事件和方法 的定义。与窗体、报表、控件等紧密关联,如:窗体模块和 报表模块都是类模块。,三、宏与模块 Access宏实质上就是VBA程序,宏的操作都是由VBA代码实现的。 宏的用法简单,上手容易,比较适合没有编程基础的用户开发普通应用程序。宏的不足是功能较弱、运行效率较差。 Access模块中内嵌的VBA功能强大,具有较完 善的语法体系和强大的开发功能。它采用目前主流 的面向对象机制和可视化编程环境,适用于开发 高级Access数据库应用系统。,1将宏转换为模块(两种情况) 转换窗体或报表中的宏 转换不属于任
3、何数据库对象(窗体和报表)的全局宏。 转换窗体或报表中的宏 在“设计视图”中打开窗体。 “工具”菜单 “宏”命令项 “将窗体的宏转换为Visual Basic代码”,屏幕显示“转换窗体宏”对话框,如图: 在对话框中单击“转换”按钮,弹出“转换完毕”对话框。 单击“确定”按钮完成转换。 报表中的宏转换过程窗体时完全一样。,将全局宏转换为模块 在“数据库”窗口中单击“宏”对象,选择要转换的宏文件。 选择“文件”菜单中的“另存为”命令项,屏幕显示“另存为”对话框,如图: 在对话框的“保存类型”下拉列表框中选择“模块”,然后单击“确定”按钮,屏幕显示“转换宏”对话框。, 在对话框中单击“转换”按钮,弹
4、出“转换完毕”对 话框 单击“确定”按钮完成转换。,“密码验证”宏转换成的代码如下:,2、为什么要使用模块? 对于以下的操作,宏不能实现而要使用模块来实现。 (1) 复杂的数据库维护和操作。 (2) 自定义的过程和函数。 (3) 运行出错时的处理。 (4) 在代码中定义数据库的对象,用于动态地创建对象。 (5) 一次对多个记录进行处理。 (6) 向过程传递变量参数。 (7) 使用ActiveX控件和其他应用程序对象。,3、什么是VBA VBA(Visual Basic for Applications)是广泛流行 的可视化应用程序开发语言VB(Visual Basic)的子集。 有VBA语言基
5、础的读者阅读VB程序代码会感觉很熟悉, 学习起来也会变得相当容易。 VBA语法简单但功能强大,支持基于面向对象程序设计, (OOP-Object Oriented Programming) 非常适合初学者使用。 需要注意的是,VB语言开发系统是独立运行的开发环 境,它创建的应用程序可以独立运行在Windows平台上;而 VBA则不同,其编程环境和VBA程序都必须依赖Office应用程 序(如Access、Word、Excel等)。,三、模块的组成 声明:声明(定义)变量 过程(若干个):过程是模块的组成单元,分2种: 子(Sub)过程 子过程没有返回值,它的定义格式如下: Sub过程名 程序代
6、码 End Sub 其中的程序代码表示要完成的一系列操作。调用子过程用 Call 过程名。 函数(Function) 函数过程又称为Function过程,函数过程有返回值,它的 定义格式如下。 Function 过程名 程序代码 End Function 调用函数过程时,直接引用函数过程的名称。,四、创建VBA模块与编程环境 1进入VBE编程环境 对于类模块和标准模块,进入VBE环境的方法不一样: (1)进入类模块的3种方法 方法1:在设计视图中打开窗体或报表,然后单击设计工具栏 上的“代码”按钮。 方法2:在设计视图中打开窗体或报表,然后右击需要编写代 码的控件,在弹出的快捷菜单中选择“事件
7、生成器”命 令项。 方法3:在设计视图中打开窗体或报表,打开需要编写代码控 件的“属性”对话框, 单击“事件”选项卡右侧的“生成器”按钮, 弹出“选择生成器”对话框“代码生成器”“确定”。,(2)进入标准模块的方法 方法1:在“数据库”窗口, “工具” “宏”, “Visual Basic编辑器”。 方法2:选择“数据库”窗口 中的“模块”对象, 单击“新建”按钮。 方法3: 在“数据库”窗口中 双击存在的模块.,2、集成编程环境VBE界面:,工具栏,属性窗口,代码窗口,工程窗口,(1)VBE工具栏 VBE界面中包括有“标准”、“编辑”、“调试”和“用户窗体”等多种工具栏,可选择“视图”菜单中
8、“工具栏”命令下的子命令显示和隐藏这些工具栏。如图为“标准”工具栏。,(2)工程窗口 工程资源管理器,显示应用程序的所有模块文件。3个按钮: 查看代码 按钮可以打开相应的代码窗口。 查看对象 按钮可以打开相应的对象窗口。 切换文件夹 可以隐藏或显示对象的分类文件夹。 (3)属性窗口 列出了所选对象的属性,由“对象”框和“属性”列表组成。 对象框: 用于列出当前所选的对象。 属性列表:按字母或分类对对象属性进行排序。 可以在属性窗口中直接用前面用到的方法设置 对象的属性(静态设置方法)。 可以在代码窗口中用VBA代码编辑对象的属 性(动态设置方法)。 (4)代码窗口 代码窗口主要是用来编写、显示
9、以及编辑VBA代码, 如下图所示。,代码窗口,数据库引擎,五、标准模块例子 (1)标准子过程例子 Public Sub area() Dim s, r As String Const PI As Single = 3.14159 r = InputBox(请输入半径:) s = Round(PI * r * r, 2) MsgBox s, , 圆的面积是: End Sub,(2)标准函数过程例子 计算圆面积模块: Public Function s(r As Single) As Single Const PI As Single = 3.14159 r = InputBox(请输入半径:)
10、s = Round(PI * r * r, 2) Debug.Print s End Function 计算阶乘模块: Public Function fac(n As Integer) As Long Dim m As Integer fac = 1: m = 1 Do While m = n fac = fac * m m = m + 1 Loop End Function,六、一个类模块例子 设计一个计算圆面积及整数阶乘的窗体如下图:,求圆面积按钮的事件代码如下: Private Sub Cmdarea_Click() Call area End Sub 求阶乘按钮的事件代码如下: Pr
11、ivate Sub Cmdfac_Click() Dim n As Integer, result As Long n = InputBox(请输入 n:) result = fac(n) MsgBox (阶乘为: a, b=; b End Sub,4数据库对象变量 数据库对象名:,数据库引擎,参见第17张幻灯片,ACCESS 对象的引用 Access中的对象或属性,可在VBA程序代码中作为变量来 引用。 窗体对象的引用格式如下: Forms!窗体名称!控件名称.属性名称 报表对象的引用格式如下: Repons!报表名称!控件名称.属性名称 如果省略了属性名称,则表示控件的基本属性。 例如,设
12、置“学生基本情况”窗体中“学号”文本框的属性,代 码表示如下:Forms!学生基本情况!学号 = ”070501” 等价于: Forms!学生基本情况!学号.Value = ”070501” 当需要多次引用对象时, 下面这样引用就方便多了: 先定义一个控件变量,如:Dim txtName AS Control 再为该变量赋值:Set txtName=Forms!学生基本情况!学号 下面就可以方便地引用学号这个对象了: txtName = ”070501”,四、数组 同类型变量的有序组合。 数组在内存中占用连续一片内存区域。数组中每一个 变量称为数组元素,数组元素可以通过其下标来访问,数组 下标
13、默认从0开始。 数组的定义: 定义一: Dim bAge(9) As Byte 定义了一个Byte型数组,含有10个元素:bAge(0bAge(9)。 定义二 Dim bAge( 3 to 5 ) As Byte bAge数组只有3个元素:bAge(3)bAge(4)bAge(5) 数组的使用: 数组元素可以象普通变量一样使用,既可以存储数据,也 可以参加表达式计算: bAge(3)=21为bAge(3)元素赋值 bAge(4)=bAge(3)*5 参加计算,例:Dim mark(1 to 100) As Integer,例:Dim a(-1 to 3) As Integer 声明一维数组a,
14、包含了5个整型元素a(-1)、 a(0) 、a(1) 、a(2) 、a(3); 例如:Dim a(2,3) As Single 二维数组在内存的存放顺序是“先行后列”。 数组a的各元素在内存中的存放顺序是: 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(2,0)a (2,1)a(2,2)a(2,3),例:Dim lArray( 0 To 3, 0 To 4) As Long 共有 45个元素等价于: Dim lArray(3,4) As Long,动态数组: 在声明数组时未给出数组的大小(省略括号中的下标), 当要使用它时,随时用Re
15、Dim语句重新指出数组大小。 形式如下: ReDim 数组名(下标,下标2) As 类型 例:Private Sub S1( ) Dim x( ) As Single n =Inputbox(“输入n”) ReDim x(n) End Sub,五、函数 函数的使用格式为:函数名(参数 , ) 如:Right(“abcdef”,2) 如:Left(山东交通学院,2) 如:year(date() 如:m=int(rnd*100)+1 产生1个1,100上的随机整数 n=int(rnd*90)+10 产生1个10,99上的随机整数,六、运算符与表达式 表达式:用运算符或圆括号将常量、变量和函数连接起
16、来的 有意义的式子。 VBA中有:算术运算符 关系运算符、 逻辑运算符、 连接运算符 对象运算符。 1算术运算符与算术表达式 算术运算符: 乘幂“”乘法“*”、除法“”整数除法“” 求模”Mod”加法“+”、减法“”。,特别说明: 整数除法运算符“”的两个操作数如果有小数部分,系 统会先取整后再运算,并舍去结果中的小数。 例如: 103的结果是3 10.24.8的结果是2。 求模运算符“Mod”的两个操作数如果有小数,系统会先四 舍五入将其变成整数后再运算,结果为余数,其符号与被除 数相同。 例如: 10 Mod 4 的结果是 2 12 Mod -5 的结果是 2 -12.8 Mod 4 的结
17、果是 -1。,2关系运算符关系表达式 “=”、“”、“”、“=”、“aa 的结果是 True。 关系表达式 #2008/5/12# 连接运算符关系运算符逻辑运算,4连接运算符 字符串连接运算符: + j; 次循环i=; i Next i Print 退出循环后i=; i End Sub 正常情况:i=1,3,5,7,9,11,13,15,17,19 现在:i=4,9,14,19,DoLoop循环语句(用于控制循环次数未知) 形式1: Do While|Until 语句块 Exit Do 语句块 Loop,形式2: Do 语句块 Exit Do 语句块 Loop While|Until ,Do
18、While Loop语句,i=1 Do While i=10 s=s+i i=i+1 Loop 当i=10成立时,执行循环体 循环变量i必须有初值 防止产生死循环 有可能一次也不执行循环体,修改循环控制变量,改变加数值,Do Loop While,i=1 Do s=s+i i=i+1 Loop While i=10 当i=10成立时,执行循环体 循环变量i必须有初值 防止产生死循环 至少执行一次循环体,修改循环控制变量,改变加数值,Do Until Loop,i=1 Do Until i10 s=s+i i=i+1 Loop 当i10成立时,结束执行循环体 循环变量i必须有初值 防止产生死循环 有可能一次也不执行循环体,修改循环控制变量,改变加数值,Do Loop Until,i=1 Do s=s+i i=i+1 Loop Until i10 当i10成立时,结束执行循环体 循环变量i必须有初值 防止产生死循环 至少执行一次循环体,修改循环控制变量,改变加数值,例:计算1+2+3+4+99+100的和。 分析累加数据初值为1,终值为100,步长(数据间递变)为1,利用For/Next结构很容易实现它。程序代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GM/T 0039-2024密码模块安全检测要求
- 产后抑郁的识别与干预个案报告
- 儿童斜视矫正与康复
- 浙江省绍兴市诸暨市重点名校2025-2026学年初三总复习质量测试(一)语文试题含解析
- 安徽庐江县2026届初三英语试题查缺补漏试题(文理)含解析
- 江苏省无锡市小黄卷2026年初三下学期第二次调研(模拟)考试英语试题试卷含解析
- 吉林省松原市宁江区重点名校2025-2026学年全国初三模拟考试(四)英语试题含解析
- 浙江省丽水市级名校2026届初三5月第一次联考语文试题试卷含解析
- 卵巢癌护理研究进展
- 孙云晓拯救男孩需要改变教育模式和评价标准
- 2019-2023年五年高考数学真题分类汇编(学生版)
- 9.1压强(考点解读)(解析版)八年级下册物理同步考点解读与专题训练(人教版)
- 能源评审培训课件
- 腹腔镜下胆囊切除手术配合课件
- 胆囊病变的影像学检查及诊断思路
- 中考英语二轮复习课件-专项训练之补全对话
- 中心静脉压测量CVPppt
- 新生儿特点及常见疾病新
- 4M变更管理程序(含表格)
- GB/T 18941-2003高聚物多孔弹性材料定负荷冲击疲劳的测定
- GB/T 18494.1-2014变流变压器第1部分:工业用变流变压器
评论
0/150
提交评论