VBA理论练习题.docx
- 文档编号:7574728
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:45
- 大小:557.13KB
VBA理论练习题.docx
《VBA理论练习题.docx》由会员分享,可在线阅读,更多相关《VBA理论练习题.docx(45页珍藏版)》请在冰点文库上搜索。
VBA理论练习题
第一部分(模块与VBA编程基础<习题8>)(p1~p6)
一、选择题(1~17)(p1-p3):
1.VBA中定义符号常量可以用关键字
A)ConstB)DimC)PublicD)Static
2.Sub过程和Function过程最根本的区别是
A)Sub过程的过程名不能返回值,而Function过程能通过过程名返回值
B)Sub过程可以使用Call语句或直接使用过程名,而Function过程不能
C)两种过程参数的传递方式不同
D)Function过程可以有参数,Sub过程不能有参数
3.定义了二维数组A(2to5,5),则该数组的元素个数为
A)25B)36C)20D)24
4.已知程序段:
s=0
Fori=1To10step2
s=s+1
i=i*2
Nexti
当循环结束后,变量i的值为a,变量s的值为b。
a.A)10B)11C)22D)16
b.A)3B)4C)5D)6
5.以下内容中不属VBA提供的数据验证函数是
A)IsTextB)IsDateC)IsNumericD)IsNull
6.已定义好有参函数f(m),其中形参m是整型量。
下面调用该函数,传递实参为5将返回的函数值赋给变量t.以下正确的是
A)t=f(m)B)t=Call(m)C)t=f(5)D)t=Callf(5)
7.在有参函数设计时,要想实现某个参数的“双向”传递,就应当说明该形参为“传址”调用形式。
其设置选项是
A)ByValB)ByRefC)OptionalD)ParamArray
8.在VBA代码调试过程中,能够显示出所有在当前过程中变量声明及变量值信息的是
A)快速监视窗口B)监视窗口C)立即窗口D)本地窗口
9.VBA的逻辑值进行算术运算时,True值被当作
A)0B)-1C)1D)任意值
10.VBA中不能进行错误处理的语句结构是
A)OnErrorThen标号B)OnErrorGoto标号
C)OnErrorResumeNextD)OnErrorGo100
11.VBA中用实际参数a和b调用有参过程Area(m,n)的正确形式是
A)Aream,nB)Areaa,bC)CallArea(m,n)D)CallAreaa,b
12.给定日期DD,可以计算该日期当月最大天数的正确表达式是
A)Day(DD)
B)Day(DateSerial(Year(DD),Month(DD),Day(DD)))
C)Day(DateSerial(Year(DD),Month(DD),0))
D)Day(DateSerial(Year(DD),Month(DD)+1,0)
13.下列关于宏和模块的叙述中,正确的是
A)模块是能够被程序调用的函数
B)通过定义宏可以选择或更新数据
C)宏或模块都不能是窗体或报表上的事件代码
D)宏可以是独立的数据库对象,可以提供独立的操作动作
14.有如下VBA代码,运行结束后,变量n的值是
n=0
Fori=1TO3
Forj=-4To-1
n=n+1
Nextj
Nexti
A)0B)3C)4D)12
15.假设有如下Sub过程:
Subsfun(xAsSingle,YAsSingle)
t=x
x=t/y
y=tmody‘mod求余计算例7mod4=3
EndSub
在窗体中添加一个命令按钮(名为Comnndl),编写如下事件过程
PrivateSubCommandl_Click()
DimaAsSinSle
DimbAsSinSle
a=5:
b=4
sfun(a,b)‘原书有错,改为:
sfuna,b或callsfun(a,b)
MsgBoxa&chr(10)+chr(13)&b‘chr(数值)的功能返回数值对应的字母
EndSub‘chr(10)=’返回1个换行符
‘chr(13)=’返回一个空格符号
注意:
a→x;b→y是按地址传递的,因此不能写成sfun5,4
chr与Asc互逆例asc(a)=97;chr(97)=aasc(chr(97))=97
打开窗体运行后,单击命令按钮,消息框中有两行输出,内容分别为
A)1和1B)1.25和lC)1.25和4D)5和4
16.有如下VBA程序段:
sum=0
n=0
Fori=1TO5
x=n/i
n=n+1
slim=sum
Nexti
以上For循环计算sum,完成的表达式是
A)1+1/1+2/3+3/4+4/5B)1+1/2+1/3+1/4+1/5
C)1/2+2/3+3/4+4/5D)1/2+1/3+1/4+1/5
17.在窗体中有一个命令按钮runl6,对应的事件代码如下:
PrivateSubrunl6_Enter()
DimnumAsInteger
DimaAsInteger
DimbAsInteger.
DimiAsInteger
Fori=1To10
num=InputBox("请输入数据:
","输入",1)
ifInt(num/2)=num/2Then‘Int取整函数例int(3.5)=3
a=a+1
Else
b=b+1
Endlf
NextI
MsgBox("运行结果:
a="&Str(a)&",b="&Str(b))
EndSub‘str(123)=”123”将123转换成字符串
与val互逆。
例:
Val(str(123))=123
运行以上事件所完成的功能是
A)对输入的10个数据求累加和
B)对输入的10个数据求各自的余数,然后再进行累加
c)对输入的10个数据求分别统计有几个是整数,有几个是非整数
D)对输人的10个数据求分别统计有几个是奇数,有几个是偶数
二、填空题(1~25)(p4—p6)
1.VBA的全称是VisualBasicforApplication。
2.模块包含了一个声明区域和一个或多个子过程(以Sub开头)或函数过程(以Function开头)。
3.说明变量最常用的方法,是使用Dim…As…结构.
4.VBA中变量作用域分为3个层次,这3个层次是局部变量、模块变量和全局变量。
5.在模块的说明区域中,用private关键字说明的变量是模块范围的变量;而用public或Global键字说明的变量是属于全局范围的变量。
6.要在程序或函数的实例间保留局部变量的值,可以用Static关键字代替Dim。
7.用户定义的数据类型可以用Type…TypeEnd关键字间说明。
8.VBA的3种流程控制结构是顺序结构、选择结构和循环结构。
9.VBA中使用的3种选择函数是IIf、Switch和Choose。
10.VBA提供了多个用于数据验证的函数。
其中IsDate函数用于合法日期验证;IsNumeric函数用于判定输入数据是否为数值。
11.VBA的有参过程定义,形参用ByVal说明,表明该形参为传值调用;形参用ByRef说明,表明该形参为传址调用.
12.VBA的错误处理主要使用OnError语句结构。
13.OnErrorGoto0语句的含义是取消错误处理。
14.OnErrorResumeNext语句的含义是忽略错误并执行下一条语句。
15.VBA语言中,函数lnputBox的功能是输入数据对话框;Msgbos函数的功能是显示消息信息。
16.在VBA中双精度的类型标识是Double。
17.在VBA中,分支结构根据条件(或条件表达式)选择执行不同的程序语句。
18.VBA的逻辑值在表达式当中进行算术运算时,True值被当作-1、False值被当作0来处理。
19.VBA编程中,要得到[15,75]上的随机整数可以用表达式Int(15+61*Rnd).
20.设有如下代码:
X=1
Do
x=x+2
LoopUntilx=7(或x>=7或x>6)
运行程序,要求循环体执行3次后结束循环,请在空白处填入适当的语句
21.设有以下窗体单击事件过程:
PrivateSubForm_Click()
a=1
fori=1to3
SelectCasei
Case1,3
a=a+1
Case2,4
a=a+2
endSelect
Nexti
MsgBoxa
EndSub
打开窗体运行后,单击窗体,则消息框的输出内容是5。
22.在窗体中添加一个命令按钮(名为Commandl)和一个文本框(名为Textl),编写事件代码如下
PrivateSubCommandlClick()
DimaAsInteger,yAsInteger
x=5:
y=7:
z=0
Me!
Textl=""
CallPl(x,x,z)
Me!
Textl=z
EndSub
Privatep1(aAsInteger,bAsInteger,cAsInteger)
c=a+b
EndSub
打开窗体后,单击命令按钮,文本框中显示的内容是12
23.在下面的VBA程序段运行时,内层循环的循环次数是9
Form=0To7Step3
Forn=m-1Tom+1
Nextn
Nextm
24.在窗体中使用一个文本框(名为numl)接受输入值,有一个命令按钮run,单击事件代码如下
PrivateSubrun_Click()
IfMe!
num1>=60Then
Result="及格"
ElseIfMe!
numl>70Then
Result="通过"
ElseIfMe!
numl>85Then
Result="合格"
EndSub
打开窗体后,若通过文本框输入的值为85,单击命令按钮,输出结果是及格。
25.在窗体中有一个名为Command25的命令按钮,Click事件代码如下。
该事件的完整功能是:
接受从键盘输入的10个大于0的整数,找出其中的最大值和对应的输入位置。
请依据上述功能要求将程序补充完整。
PrivateSubCommand25_Click()
Max=0
max_n=0
Fori=lTo10
num=Val(InputBox("请输入第"& i &"个大于0的整数:
"))
Ifnum>maxThen
max=num
max_n=i
EndIf
Nexti
MsgBox("最大值为第"&max_n&"个输入的"&max)
EndSub
第二部分(数据库编程<习题9>)(p7~p13)
一、选择题(1~9)(p7---p8)
1.以下内容中不属VBA提供的数据验证函数是
A)IsNullB)IsDateC)lsNumericD)IsText
2.VBA"定时”操作中,需要设置窗体的“计时器间隔(TimerInterval)”属性值。
其计量单位是
A)微秒B)毫秒C)秒D)分钟
3.能够实现从指定记录集里检索特定字段值的函数是
A)NzB)DSumC)RndD)DLookup
4.DAO模型层次中处在最顶层的对象是
A)DBEngineB)Workspace C)Database D)RecordSet
5.ADO对象模型中可以打开RecordSet对象的是
A)只能是Connection对象 B)只能是Command对象
C)可以是Connection对象和Command对象D)不存在
6.InputBox函数返回值的类型为
A)数值B)字符串(错误)注意:
正确答案为D)
C)变体D)数值或字符串(视输入的数据而定)InputBox$返回字符串
InputBox返回数值或字符串
7.ADO的含义是
A)开放数据库互连应用编程接12 B)数据库访问对象
C)动态链接库 D)Active数据对象
8.执行下面的语句后,所弹出的信息框外观样式为
MsgBox"AAAA",vbOKCancel+vbQuestion,"BBBB"
注:
vbQuestion等价于32
9.在MsgBox(prompt,buttons,title,hetpfite,context)函数调用形式中必须提供的参数是
A)promptB)buttonsC)titleD)context
二、填空题(1~18)(p8---p13):
1.VBA提供了多个用于数据验证的函数。
其中IsDate函数用于合法日期验证;IsNumeric函数用于判定输入数据是否为数值。
2.VBA语言中,函数InputBox的功能是输入数据对话框;Msgbox函数的功能是显示消息信息。
3.VBA的“定时”操作功能是通过窗体的定时(Timer)事件过程完成。
4.VBA中打开窗体的命令语句是DoCmd.OpenForm。
5.Access的窗体或报表事件可以有两种方法来响应:
宏对象和事件过程。
6.窗体的计时器触发事件激发的时间间隔是通过计时器间隔(或interval)属性来设置。
7.窗体中有两个命令按钮:
“显示”(控件名为cmdDisplay)和“测试”(控件名为cmdTest)。
当单击“测试”按钮时,执行的事件功能是:
首先弹出消息框,若点击其中的“确定”按钮,则隐藏窗体上的“显示”按钮;否则直接返回到窗体中。
请填空补充完整(见227)。
PrivateSubcmdtest_Click()
Answer=MsgBox("隐藏按钮?
",vbOKCancel十vbQuestion,"Msg")
IfAnswer=vbOKThen
Me!
cmddisplay.Visible=False
EndIf
EndSub
注意:
vbOKCancel等价于1 vbQuestion等价于32
8.设计一个计时的Access应用程序。
该程序界面如图所示,由一个文本框(名为Textl)、一个标签及两个命令按钮(一个标题为Start,命名为Commandl;另一个标题为Stop,命名为Command2)组成。
程序功能为:
打开窗体运行后,单击“Start'’按钮,则开始计时,文本框中显示秒数;单击“Stop”按钮,则计时停止;双击“Stop”按钮,则退出。
请填空补充完整。
Dimiasinteger
PrivateSubCommandlClick()
i=0
Me.TimerInterval=1000
EndSub
PrivateSubCommand2_Click()
Me.TimerInterval=0
EndSub
PrivateSubCommand2_DblClick(CancelAsInteger)
DoCmd.Close
EndSub
PrivateSubForm_Load()
Me.TimerInterval=0
Me!
Text1=0
EndSub
PrivateSubForm_Timer()
i=i+1
Me!
Textl=i
EndSub
9.要实现以下图示效果的消息框显示,VBA代码语句为MsgBox"数据处理结束!
",vbinformation,"消息"
10.VBA中主要提供了三种数据库访问接口:
ODBCAPI、DAO、ADO。
11.DAO对象模型采用分层结构,其中位于最顶层的对象是DBEngine。
12.Access的VBA编程操作本地数据库时,提供一种DAO数据库打开的快捷方式是CurrentDB().也提供一种ADO的默认连接对象是CurrentProject.Connection
13.DAO模型中,主要的控制对象有DBEngine、Workspace、Database、RecordSetField和Error。
14.ADO对象模型主要有Connection、Command、RecordSet、Field,而相应QueryDef和Error 5个对象。
15.已知一个为“学生”的Access数据库,库中的表“stud"存储学生的基本情况信息,包括学号、姓名、性别和籍贯。
下面程序的功能是:
通过窗体向stud表中添加学生记录。
对应“学号”、“姓名”、“性别”和“籍贯”的4个文本框的名称分别为:
tNo、tName、tSex和tRes。
当点击窗体上的“增加”命令按钮(名称为Commandl)时,首先判断学号是否重复,如果不重复则向“stud"表中添加学生记录;如果学号重复,则给出提示信息。
当点击窗体上的“退出”命令按钮(名称为Command2)时,关闭当前窗体。
依据要求功能,请将以下程序补充完整。
PrivateSubForm_Load()
‘打开窗口时,连接Access数据库
SetADOcn=CurrentProject.Connention
EndSub
DimADOcnAsNewADODB.Connection
PrivateSubCommandlClick()
‘增加学生记录
DimstrSQLAsString
DimADOrsAsNewADO.Recordset
SetADOrs.ActiveConnection=ADOcn
ADOrs.Open"Select学号FromStudWhere学号='"+tNo+"'"
IfNotADOrs.EOFThen
MsgBox"你输入的学号已存在,不能新增加!
”
Else
StrSQL="InsertIntostud(学号,姓名,性别,籍贯)"
StrSQL=strSQL+"Values('",+tNo+"','"+tName+"','"+tSex+tRes+"')"
ADOrs.ExecuteStrSQL
MsgBox"添加成功,请继续!
"
EndIf
ADOrs.Close
SetADOrs=Nothing
EndSub
PrivateSubCommand2_Click()
Docmd.Close
EndSub
16.已经设计出一个表格式表单窗体,可以输出教师表的相关字段信息。
请按照以下功能要求补充设计:
改变当前记录,消息框弹出提示“是否删除该记录?
”,单击“是”,则直接删除该当前记录;单击“否”,则什么都不做。
其效果图如下:
’单击“退出”按钮,关闭窗体。
PrivateSubbtnCaneel_Ctick()
DoCmd.Close
EndSub
’表格式表单窗体当前记录变化时触发
PrivateSubForm_Current()
IfMsgBox("是否删除该记录?
",vbQuestion+vbYesNo,"确认")
=6(或vbYes)Then
Me.Recordset.Delete
Endlf
EndSub
17.已经完成一个窗体的部分设计。
请按照以下功能要求补充设计:
(1)原始文本处的文本框只接受英文大小写字符和汉字,其他字符输入一律忽略;
(2)单击“复制”按钮,可将原始文本框的选择内容追加到目标文本框内;
(3)目标文本框内字符数超过50,则清空。
其效果图如下:
代码如下:
DimstrTempAsString’存放原始文本框选择文本
’单击“复制”按钮,实施复制操作
PrivateSubtCopy_Click()
Me!
tDestText:
Nz(Me!
tDestText)十strTemp
strTemp=””
IfLen(Me!
tDestText)>50ThenMe!
tDestText=Null
EndSub
’原始文本框接受英文大小字母和汉字输入
PrivateSubtSourceText_KeyPress(KeyAsciiAsInteger)
If(KeyAscii>=Ase("A")AndKeyAscii<=Ase("Z"))Or(KeyAscii>=Asc("a")AndKeyAscii<=Asc("2")) Then
Else
’输入其他字符,忽略
KeyAscii=0
EndIf
EndSub
’返回原始文本框选择文本
PrivateSubtSourceTextLostFocus()
IfMe!
tSourceText.SelLength>0Then
strTemp=Me!
tSourceText.SelText
(或Mid(Me!
tSourceText,Me!
tSourceText.SelStart+1,Me!
tSourceText.SelLength))
Else
strTemp=""
EndIf
EndSub
18.Nz函数主要用于处理Null值时的情况;Dlookup函数的功用是从指定记录集里检索特定字段的值。
第三部分(经典题解)(p14~p37)
一、选择题(1~33)
1.假定有以下循环结构(2005年9月)
DoUntil条件
循环体
Loop
则正确的叙述是。
A)如果“条件”值为0,则一次循环体也不执行
B)如果“条件”值为0,则至少执行一次循环体
C)如果“条件”值不为0,则至少执行一次循环体
D)不论“条件”是否为“真”,至少要执行一次循环体
解析:
Do…Until。
..Loop循环结构中,当条件值为假时,重复执行循环体,直至条件值为真,结束循环。
因此,如果条件值为0,则至少执行一次循环体。
2.窗体上添加有3个命令按钮,分别命名为Commandl、Command2和Command3。
编写Commandl的单击事件过程,完成的功能为:
当单击按钮Commandl时,按钮Command2可用,按钮Command3不可见。
以下正确的是。
(2005年9月)
A)PrivateSubCommandl_Click()
Command2.Visible=True
Command3.Visible=False
EndSub
B)PrivateSubCommandl_Click()
Command2.Enabled=true
Command3.Enabled=False
EndSub
C)PrivateSubCommandl_Click()
Comman
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 理论 练习题