第八章考点总结.docx
《第八章考点总结.docx》由会员分享,可在线阅读,更多相关《第八章考点总结.docx(14页珍藏版)》请在冰豆网上搜索。
第八章考点总结
第八章模块与VBA编程基础考点总结
一、必须掌握的控件属性(课本201页)即课本302页附表C控件属性及其含义
控制控件位置的属性有:
左边距(Left)和上边距(Top)。
控制控件大小的有:
宽度(Width)和高度(Height)。
二、必须掌握的控件事件(事件处理代码为:
控件名称_事件名称)课本308页即附表E常用事件
a、键盘事件:
KeyDown(键按下)、KeyUp(键释放)和KeyPress(键点击)。
b、鼠标事件:
Click(鼠标单击)、DblClick(鼠标双击)、MouseMove(鼠标移动)、MouseDown(鼠标按下)、MouseUP(鼠标释放)。
c、焦点事件:
LostFocus(失去焦点)和GotFocus(得到焦点)。
d、Change事件:
当文本框或组合框的文本部分的内容更改时,Change事件发生。
三、必须掌握的窗体事件(事件处理代码为Form_事件名称)课本308页即附表E常用事件
a、键盘事件:
KeyDown(键按下)、KeyUp(键释放)和KeyPress(键点击)。
b、鼠标事件:
Click(鼠标单击)、DblClick(鼠标双击)、MouseMove(鼠标移动)、MouseDown(鼠标按下)、MouseUP(鼠标释放)。
c、焦点事件:
LostFocus(失去焦点)和GotFocus(得到焦点)。
d、窗体事件:
Open(窗体打开)、Load(窗体加载)、Unload(窗体去加载)、Close(窗体关闭)。
注意:
当打开窗体时,是先Open而后Load,而关闭窗体时,是先Unload而后Close。
e、定时事件Timer:
Timer事件在窗体的TimerInterval属性指定的规则时间间隔内发生。
四、事件处理代码的格式:
在事件的处理代码中,其格式是:
对于窗体事件,其格式是:
Form_事件名称;
而对于控件事件,其格式是:
控件名称_事件名称。
例如:
当文本框的名称为username时,处理其内容变化时的代码为:
username_change();而处理整个窗体的定时发生的代码为:
Form_Timer()。
命令按钮的名称为bt1时,单击事件代码为:
bt1_click();窗体的加载代码是:
Form_Load;
五、VBA程序的书写格式:
(课本206页)
1)一个语句,通用写成一行;当一行写不下时,可以续行符(_)将语句写在下一行。
2)可以使用冒号(:
)将多个语句写在一行中。
3)可以在程序中加入注释语句,以说明程序。
其实现有两种方式:
格式一是Rem注释语句格式二是‘注释语句。
六、控件或窗体属性的访问方式:
(本窗体是指产生事件的窗体或产生事件的控件所在的窗体)(课本210页四.数据库对象变量)
a、访问本窗体的属性:
Me.属性名或者属性名。
如:
Me.Caption=”学生窗体”。
b、访问本窗体中控件的属性:
Me.控件名.属性名或者控件名.属性名
如:
Me.用户名.Value=”张三”或用户名.Value=”张三”。
c、访问其它窗体的属性:
Forms!
窗体名.属性名。
d、访问其它窗体中控件的属性:
Forms!
窗体名.控件名.属性名。
七、变量的作用范围(课本210页三.变量的作用域)
在过程中声明的变量(局部变量),只能在本过程中作用,而在过程外部是不能对其进行访问的。
而在过程外声明的变量(全局变量),在本模块中的所的过程都可对此同一个变量进行访问。
注意:
例子如下:
a、一般是先声明变量而后使用,但也可以直接使用,此时一般是作为局部变量。
b、变量在声明时,都有一个默认值。
数值类型的变量为0,而字符串类型的为空字符串(“”)。
c、当局部变量与全局变量同名时,在过程中优先使用的是局部变量。
八、变量的生命周期(课本210页三.变量的作用域)
局部范围:
在过程中定义的变量,其生命周期是从开始执行时开始,到过程结束时为止。
每次调用时,都是一次新的开始。
但用static定义的局部变量,其持续时间是整个应用程序的时间,多次调用都是同一个变量。
全局范围:
在模块中定义的变量,其生命周期是整个模块的执行时间,多个过程访问是的同一个变量。
九、数组的下标与元素的访问(课本211页五.数组)
数组可以用来保存同类型的多个数据。
使用数组的好处就是数组中的所有值都以一个名称进行存储,并且可以使用下标来单独地标识这些数组元素。
定义的格式:
Dim数组名([下标下界to]下标上界)as数据类型
当省略了下标下界时,其默认的下标下界值是0。
也可以在模块的声明部分使用”OptionBase0/1”语句来将数组的默认下标从0改了1。
定义:
Dimid(9)asInteger
在计算机中的表示方式为:
定义:
Dimid(2to11)asInteger
在计算机中的表示方式为:
从上图的2位置开始的
定义:
Dim座位号(3,1to5)asInteger
在计算机中的表示方式为:
一十、数值函数:
重要(课本213页)附表A
a、abs(数值):
求数值的绝对值。
b、int(数值)和fix(数值)(重要):
都是用来求数值的整数部分。
当数值为正数时,两都的结果相同;但当数值为负数时,int返回小于或等于参数值的第一个负数,而fix返回大于或等于参数值的第一个负数。
如:
int(3.9)=fix(3.9)=3,但int(-3.9)=-4而fix(-3.9)=-3。
c、sqr(数值):
返回数值的平方根。
如sqr(9)=3。
d、Rnd():
返回一个0~1之间的一个单精度数。
e、Sgn(数值):
返回数值的符号。
正数返回1,负数返回-1,0返回0。
一十一、字符函数(重要):
(课本214页)附表A
a、inStr([开始位置,]母字符串,子字符串):
返回子字符串第一次在母字符串中出现的位置。
如没有开始位置,则是指从第一个字符开始(即从1开始)。
如:
inStr(“98765”,”65”)=4。
如在母字符串中找不到,则返回0。
b、len(字符串):
返回字符串中字符的个数。
c、left(字符串,字符个数):
从字符串的左边起截取指定个数的字符。
Right(字符串,字符个数):
从字符串的右边起截取指定个数的字符。
Mid(字符串,开始的位置[,字符个数]):
从字符串的指定位置起截取指定个数的字符,如省略第三个参数,则表示一直截取到最后一个。
例如:
left(“计算机等级考试”,3)=”计算机”,Right(“计算机等级考试”,4)=”等级考试”,Mid(“计算机等级考试”,4)=”等级考试”。
d、space(数值):
返回指定数值的空格字符串。
一十二、日期函数(重要):
(课本215页)
a、Date():
表示系统当前的日期;Time():
表示系统当前的时间;Now():
表示系统当前的日期和时间。
b、Year(日期):
返回指定日期中的年数;Month(日期):
返回指定日期中的月数;
Day(日期):
返回指定日期中的天数;Weekday(日期):
返回指定日期中的星期数,星期日为1。
一十三、类型转换函数:
(课本218页)
a、Asc函数:
Asc(“字符串”),返回字符串首字符的ASCII值。
例如:
Asc(“abcd”),返回值为:
97(a的ASCII值为97)。
b、Chr函数:
Chr(数值),返回ASCII数值对应的字符。
例如:
Chr(97),返回值为:
a
c、Str函数:
Str(数值),将数值转换成相应的字符串,对应的字符串中总有一个字符用来表示数值的正负。
例如:
Len(Str(99))=3,而Len(Str(-6))=2。
(重要)
d、Val函数:
Val(“字符串”),将字符串转换成数值。
注意:
其能自动去掉字符串中的空格、制表符和换行符,
并且直到第一个非数值字符为止。
例如:
Val(“345”)=345,而Val(“345abc678”)=345(重要)
e、Nz函数:
Nz(表达式[,指定值]),当表达式的值为空(null)时,将其值转换成0、空字符串(“”)或指定的值。
例如:
Val(Nz(InputBox(“请输入分数”,”60”)),相当于指定了输入默认值为60。
一十四、算术运算符(课本219页)
算术运算符有乘幂(^)、乘法(*)、除法(/)、整数除法(\)、求模运算(mod)、加法(+)及减法(-)。
注意:
1)整数除法时,若操作数有小数,则先取整后再运算,其结果也仅取整数。
取整是仅要数值的整数部分,不进行四舍五入。
例如:
9.8\2=4
2)求模运算时,若操作数有小数,则选进行四舍五入后再进行运算,其结果的符号仅与被除数的相同。
例如:
-9.8mod3=-1
3)运算的优先级从高到低:
乘幂、乘法与除法、整数除法、求模运算、加法与减法。
例如:
3*3\3/3=9
一十五、连接运算符(课本220页)
字符串连接运算符能将两个操作数连接成一个字符串,有”&”和”+”两个。
注意:
1)“&”运算符是将两个操作数强制当作字符串连接。
例如:
”2+3”&“=”&(2+3)结果为”2+3=5”
2)“+”运算符是将两个字符串连接成一个字符串。
即仅当两个操作数都是字符串时,才能进行连接。
一十六、运算符的优先级(课本220页)
不同运算符间的优先级从高到低为:
算术运算符>连接运算符>关系运算符>逻辑运算符>赋值运算符。
例如:
a=10:
b=5:
c=6
MsgBoxa=b+c结果为:
0,原因是a=b+c整个当作一个表达式,关系运算符>赋值运算符(10=11为假)
一十七、控制语句:
条件与循环语句(课本220页)笔试题容易出,重点讲
条件语句的:
if…then…endif和SelectCase…EndSelect结构。
而循环语句有:
for…next和do…loop结构。
对于此类型的题目,最好的方法是逐一的写出其执行的完整过程,最后得出结果。
从考试题目来看,一般只要几步都可以得出结果。
如下所示:
例一:
n=10;m=l;k=1
DoWhilek<=n
m=m*2
k=k+1
Loop
MsgBoxm1024
一十八、条件函数(课本226页)
一十九、按值传递参数(课本236页)
当在进行声明时,如果在形参名称前使用了ByVal关键字的话,则是按值传递参数。
其特征时,当将实参的值赋值给形参之后,两者之间没有了任何关系。
即以后在过程上修改了形参的值,对实参没有任何的影响。
Subswap(ByValaasInteger,ByValbasInteger)
Dimcasinterger
C=a:
a=b:
b=c
Endsub
X=10:
y=20
Swap(x,y)
分析:
因为声明时,参数名称前有ByVal关键字,故是按值传递参数的形式。
在调用时,将实参的值赋给相应的形参:
a=x=10,b=y=20,之后,a与x,b与y之间就是独立的不同变量。
当执行交换语句后,a与b的值进行了交换,即a=20,b=10。
此时,x与y的值不受影响,还是原值,即x=10,y=20.
二十、按引用传递参数(课本236页)
当在进行声明时,如果在形参名称前使用了ByRef关键字的话,则是按引用传递参数。
其特征时,实参与形参相应于同一个变量。
即以后在过程上修改了形参的值,就相当于修改了实参的值。
注意:
当参数名称前没有ByVal或ByRef时,其默认是按引用传递参数(ByRef)。
Subswap(ByRefaasInteger,ByRefbasInteger)
Dimcasinterger
C=a:
a=b:
b=c
Endsub
X=10:
y=20
Swap(x,y)
分析:
因为声明时,参数名称前有ByRef关键字,故是按引用传递参数的形式,此时,a相当于x,b相当于是y.
交换前,a=x=10,b=y=20
交换后,x=a=20,y=b=10
二十一、消息框(MsgBox)(课本248页)或者是附表A
消息框用于在对话框中显示消息、等待用户单击按钮,并返回一个整数值告诉用户单击哪一个按钮。
其格式为:
MsgBox“提示的内容”,对话框的类型,”提示的标题”。
其中对话框的类型的值有:
同时,在MsgBox中还可以显示一些标志信息,例如提问等,不同的标志信息和按钮可以使用“+”号连接起来共同显示,例如,下面的代码运行效果如下图所示:
MsgBox“确实要删除数据吗?
”,vbQuestion+vbYesNo,”删除数据”
二十二、VBA程序中执行宏操作的方式(课本247页)
在VBA程序中,可以通过DoCmd对象来操纵所有的宏操作。
考试考得多的宏操作有:
打开表(OpenTable)、打开查询(OpenQuery)、打开窗体(OpenForm)、打开报表(OpenReport)、打开宏(OpenMacro)以及对这些对象的关闭操作(Close)。
二十三、数据库编程方式:
VBA中提供了三种数据库访问方式:
ODBC,开放数据库互连;DAO,数据访问对象;ADO,Active数据对象。
二十四、DAO编程
(一)DAO模型结构(课本260页)
DBEngine:
是DAO模型的最上层对象,而且包含并控制DAO模型中的其他全部对象。
Workspace:
表示一个工作区,代表一种访问数据库的方式。
默认的是DAO方式。
Database:
代表打开的一个数据库,可对其进行操作。
RecordSet:
代表数据访问所返回的一个记录集。
Field:
代表记录集中的一个字段。
(二)通过DAO访问数据(课本260页)
(三)通过DAO更新数据
subupdateData()
‘第一部分:
定义相应的变量
DimwsasDAO.Workspace
DimdbasDAO.Database
DimrsasDAO.Recordset
DimfdasDAO.Field
‘第二部分:
访问数据库
setws=DBEngine.Workspaces(0)
setdb=ws.OpenDatabase(“c:
\教学管理数
据.mdb”)
setrs=db.OpenRecordSet(“学生表”)
setfd=rs.Fields(“姓名”)
‘第三部分:
遍历记录集中的每一行
dowhileNotrs.eof
rs.Edit
fd=fd&“a”
rs.Update
rs.MoveNext
loop
‘第四部分:
关闭
rs.Close
db.Close
setrs=Nothing
setdb=Nothing
二十五、ADO编程:
重要
(一)ADO对象(课本261页)
Connection:
代表与数据库建立的一个连接对象,就好象一个通道。
Commend:
代表一个SQL命令。
RecordSet:
代表数据访问所返回的一个记录集。
Field:
代表记录集中的一个字段。
(二)通过ADO访问数据(课本267页)
sublookData()
‘第一部分:
定义相应的变量
DimcnasADODB.Connection
DimrsasADODB.Recordset
DimfdasADODB.Field
‘第二部分:
访问数据库
cn.Provider=”Microsoft.Jet.OLEDB.4.0”
cn.Open“c:
\教学管理数据.mdb”
rs.Open“学生表”,cn
setfd=rs.Fields(“姓名”)
‘第三部分:
遍历记录集中的每一行
dowhileNotrs.eof
Debug.printfd
rs.MoveNext
loop
‘第四部分:
关闭
rs.Close
db.Close
setrs=Nothing
setdb=Nothing
endsub
(三)通过ADO更新数据
subupdateData()
‘第一部分:
定义相应的变量
DimcnasADODB.Connection
DimrsasADODB.Recordset
DimfdasADODB.Field
‘第二部分:
访问数据库
cn.Provider=”Microsoft.Jet.OLEDB.4.0”
cn.Open“c:
\教学管理数据.mdb”
rs.Open“学生表”,cn
setfd=rs.Fields(“姓名”)
‘第三部分:
遍历记录集中的每一行
dowhileNotrs.eof
rs.Edit
fd=fd&“a”
rs.Update
rs.MoveNext
loop
‘第四部分:
关闭
rs.Close
db.Close
setrs=Nothing
setdb=Nothing
endsub
二十六、访问数据库的函数:
重要(课本277页)
下列四个函数可以用来直接访问记录集中的数据。
格式为:
函数名(字段名称,记录集[,条件]),其中记录集可以是表、查询或SQL语句。
1、DCount函数:
返加指定记录集中的记录个数。
2、DAvg函数:
返加指定记录集中某字段的平均值。
3、DSum函数:
返加指定记录集中某字段的总和。
4、DLookup函数:
返回指定记录集中某字段的值。
(课本278页)
例子1:
在一个文本框中显示所有女教师的总人数。
则在文本框的控件来源中填入:
=Dcount(“编号”,”教师表”,”性别=’女’”)
例子2:
根据窗体上一个文本框控件(名为tNum)中输入的课程编号,而从课程表里对应的课程名称显示在另一个文本框控件(名为tName)中。
PrivatesubtNum_AfterUpdate()
Me.tName=DLookup(“课程名称”,”课程表”,”编号=’”&me.tNum&“’”
注意:
在SQL语句的条件中,当字段的内容为字符串型的时,要用单引号括起来的。
例如:
姓名为张三的学生,应写成:
姓名=’张三’