第八章 模块(18%—22%,近年逐年增加,是重点考查内容)
考点一:模块的基本概念
1、 类模块:窗体和报表都属于类模块,而且它们各自与某一窗体或报表相关联(类模块可以作为独立的模块存在);
2、 标准模块:一般用于存放其他Access数据库对象使用的公共过程;
3、 将宏转化为模块:其实就是将宏实现的功能用模块(写VBA代码的方法)来表达出来。
考点二:创建模块
1、 创建新模块:这里注意创建类模块和创建标准模块的不同;
2、 在模块中加入过程:所有的VBA程序代码都必须存在于过程中;
3、 在模块中执行宏:可以使用DoCmd对象的RunMacro方法,具体格式为:
DoCmd.RunMacro 宏名称
考点三:VBA程序设计基础
1、 面向对象程序设计的基本概念
〈1〉 对象:是将数据和代码封装起来的实体;
〈2〉 属性和方法:描述了对象的行为和性质,引用方式为:对象.属性或对象.方法;
〈3〉 事件和事件过程:
事件是access对象控件可以识别的“动作”,如单击命令按钮,向文本框中输入内容等;
事件过程就是为某个事件编写VBA代码过程,完成指定动作;
两者的区别就:事件是系统确定好的,事件过程可以由用户来编写。
2、 VBA编程基础——常量、变量、运算符和表达式
〈1〉 VBA的数据类型:
Integer 整型、String 字符型、Single 单精度型、Double 双精度型、Boolean 布尔型、Date 日期型,Variant 变体型
注解1:当转化其他的数值类型为Boolean类型时,0会转成False,而其他的值则转成了True;而将Boolean类型转成其他类型时,False成为0,而True成为-1.
注解2:变量没有显示声明(用如Dim、Private、Static等语句),那么默认为变体类型。是一种特殊的数据类型,除了定义长String数据以及用户定义类型外,可以包含任何种类的数据。
〈2〉 变量
--声明变量的两种方法:隐性声明(默认为variant类型)和显性声明;
注解:如果是 Dim x,y,z As Integer ,那么x,y为Variant类型。
--变量的三个范围级别
过程级别
只有在声明此变量的过程中才可以使用的变量成为局部变量。可以使用Dim 或Static关键字来定义。
注解:Dim定义的变量只有在其所在的过程运行时有值,static定义的变量在整个程序运行期间都有值。
私有模块级别
私有模块定义的变量只对所属模块过程可用,可以使用Dim和Private定义。
公共模块级别
一般用public来定义,所有的模块都可以用。
〈3〉 数组
--可以同时定义多个变量,有一维数组,二维数组…;
--默认情况下数组下标为0,除非用Option Base 1来把默认值更改为1;
--如定义一个一维数组 Dim s(3) as integer ,它等同于: Dim s(0 to 3) as integer ,两者都定义数组中有4个元素,分别是:s(0),s(1),s(2),s(3);
--对于一个二维元素,根据同样的道理,如m(1,2),那么就这个元素中就包含2*3=6个元素。
〈4〉 运算符
--数学运算符〈重点掌握整数除法和求模运算符,见P96〉
--比较运算符〈注意比较运算符的结果为逻辑值,true,false〉
--连接运算符〈&(强制将两个表达式作为字符串连接) 和+(连接字符串数据)〉
--逻辑运算符〈结果同样为逻辑值〉
--表达式与优先级
举例:求表达式12*3/4-7 mod2+2>3的值
因为:算数运算符>连接运算符>关系运算符>逻辑运算符,算数运算符中乘除符号>求模>加减符号(具体见P98 表8.7)
9-1+2>3,进一步推得10>3,所以结果为true。
〈5〉 标准函数
--这些函数都是系统已经定义好的内置函数,使用就可以完成特定的功能,这一部分需要熟记,并知道每个函数的用法。
具体见P98.
3、 VBA程序流程控制语句
〈1〉 语句的三个分类:
声明语句:命名和定义过程、变量、数组以及常数;
可执行语句:执行赋值、判断、循环等各种操作,运行函数或过程等;
赋值语句:将变量或常量赋给一个值或表达式。
〈2〉 注释语句
--使用Rem语句,格式为: Rem 注释语句
注解:如果Rem和代码语句在同一行,则前面应该加上冒号(:)
--使用 ‘ ,格式为: ’ 注释语句
〈3〉 条件语句:根据条件表达式的值来选择程序运行语句
If….Then
If…Then…Else
例题:下面是一个多分支选择结构考题。
在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码:
Private Sub Command1_Click()
a=75
If a>60 Then
k=1
ElseIf a>70 Then
k=2
ElseIf a=85 Then
k=3
ElseIf a=85 Then
k=4
EndIf
MsgBox k
End Sub
分析:
本题是一个if条件结构的多分支程序,首先进行判断,如果满足条件就执行该条件下的代码。
并且,当其执行过某个分支之后就会退出条件语句。
对本题来说,a=75>60,所以执行k=1,然后退出条件结构,即使下面的也符合条件也不会继续执行。
窗体打开运行后,单击命令按钮,则消息框的输出结果是()
A 、 1
B、 2
C、3
D、4
Select Case
注解;当遇到多分支结构时,当某分支条件正确并执行过某个分支后,就会跳出判断,不会选择继续向下判断。
〈4〉 循环语句
Do…Loop
注:对于While,条件表达式为真时执行循环,为假就退出循环。
While在Do后面与在Loop后面的不同:前者先判断,成立就执行,后者是先执行,后判断条件是否满足,继续执行循环。即使开始条件为假,后者也会执行1次。
对于Until同样如此分析。
注:对于Until,条件表达式为假时执行循环,为真就退出循环。
For…Next
注意:判断For循环执行与否的条件(P109)。
例题:
因为这个for循环步长step=1(默认)>0,所以当循环变量i<=终值时,循环可以进行。具体来看看执行情况。因此,经过分析,我们知道这个循环执行了5次,直到循环变量i>4终止循环。输出sum。这个程序的功能就是求出了从0—4的所有整数的和。
对于所有循环我们都可以列一个表来分析:(如下)
循环次数 |
循环变量i |
sum的值 |
1 |
0 |
0 |
2 |
1 |
1 |
3 |
2 |
3 |
4 |
3 |
6 |
5 |
4 |
10 |
4、 过程调用和参数传递
〈1〉 过程调用
子过程调用的两种方式:
Call 子过程名([<参数>])或将Call省略
函数子过程调用:函数过程名([<参数>])
〈2〉 参数传递
在函数或者子过程定义时,如果使用ByRef关键字,则说明参数是传址传递,这时形参的变化会影响到相应的实参,也就是说参数的变化是双向的;
如果使用ByVal关键字,则说明参数是传值传递,这时形参的变化不会影响到相应的实参,也就是说参数的变化是单向的;
默认情况下,参数是传址传递的,也就是说参数的变化是双向的。
例题:
在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码:
问:窗体打开运行后,单击命令按钮,则消息框的输出结果为___.(2008-9)
分析:
这里关键是在定义过程p时,定义参数的方式:因为默认是传址传递,ByVal关键字表明是传值传递,则说明第一个参数n是传址传递,m是传值传递。
那么,x=12传递给n后,n=n Mod 10为2,会使得x也变为2;
而对于m是传值传递,所以无论如何变化都不会影响y。
所以调用过程p后,x=2,y=32
答案应该为64.
重要提醒!!内容中联系方式并非本站联系方式,报名咨询的学员请与下面最新联系方式联系我们咨询报名-以免损失!
>>长期招聘兼职招生代理人员,项目合作,团报优惠咨询,有意者请联系我们 >>咨询:13312524700(可加微信)。
云南地州中心:◆咨询电话:0871-65385921、17787865775 冯老师、 王老师(微信报名:17787865775)
总部报名地址: ◆昆明市-五华区教场东路莲花财富中心10楼;网课试听:ke.xuekaocn.cn
地州分校: 大理分校 丽江分校 迪庆分校 怒江分校 红河分校 临沧分校 玉溪分校 文山分校 保山分校 德宏分校 昭通分校 普洱分校 版纳分校 【各地州学员请加老师微信咨询报名,电话(微信):133-1252-4700】;【2021年云南省成人高考>>立即报名】
职业技能考证:心理咨询师、健康管理师、茶艺师等更多>◆咨询电话:133 1252 4700(微信)
公考培训咨询:◆国考云南省考公务员/事业单位面授培训,咨询电话:133 1252 4700 (微信)