第8章VBA程序设计基础.docx
《第8章VBA程序设计基础.docx》由会员分享,可在线阅读,更多相关《第8章VBA程序设计基础.docx(22页珍藏版)》请在冰豆网上搜索。
![第8章VBA程序设计基础.docx](https://file1.bdocx.com/fileroot1/2022-11/29/672fe4ea-f43f-45dd-b560-d0d8d49245f4/672fe4ea-f43f-45dd-b560-d0d8d49245f41.gif)
第8章VBA程序设计基础
(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是
A)-369
B)369
C)0.369
D)整数集合{1,2,3,4,5}
(17)下列表达式计算结果为日期类型的是
A)#2012-1-23#-#2011-2-3#
B)year(#2011-2-3#)
C)DateValue("2011-2-3")
D)Len("2011-2-3")
(23)下列表达式中,能正确表示条件“x和y都是奇数”的是
A)xMod2=0AndyMod2=0
B)xMod2=0OryMod2=0
C)xMod2=1AndyMod2=1
D)xMod2=1OryMod2=1
(26)在VBA中,能自动检查出来的错误是
A)语法错误
B)逻辑错误
C)运行错误
D)注释错误
(27)下列给出的选项中,非法的变量名是
A)Sum
B)Integer_2
C)Rem
D)Form1
(28)如果在被调用的过程中改变了形参变量的值;但又不影响实参变量本身,这种参数传递方式称为
A)按值传递
B)按地址传递
C)ByRef传递
D)按形参传递
(29)表达式“B=INT(A+0.5)”的功能是
A)将变量A保留小数点后1位
B)将变量A四舍五入取整
C)将变量A保留小数点后5位
D)舍去变量A的小数部分
(30)VBA语句“DimNewArray(10)asInteger”的含义是
A)定义10个整型数构成的数组NewArray
B)定义11个整型数构成的数组NewArray
C)定义1个值为整型数的变量NewArray(10)
D)定义1个值为10的变量NewArray
(31)运行下列程序段,结果是
Form=10to1step0
k=k+3
Nextm
A)形成死循环
B)循环体不执行即结束循环
C)出现语法错误
D)循环体执行一次后结束循环
(32)运行下列程序,结果是
PrivateSubCommand32_Click()
f0=1:
f1=1:
k=1
DoWhilek<=5
f=f0+f1
f0=f1
f1=f
k=k+1
Loop
MsgBox"f="&f
EndSub
A)f=5
B)f=7
C)f=8
D)f=13
(33)有如下事件程序,运行该程序后输出结果是
PrivateSubCommand33_Click()
DimxAsInteger,yAsInteger
x=1:
y=0
DoUntily<=25
y=y+x*x
x=x+1
Loop
MsgBox"x="&x&",y="&y
EndSub
A)x=1,y=0
B)x=4,y=25
C)x=5,y=30
D)输出其他结果
(34)下列程序的功能是计算sum=1+(1+3)+(1+3+5)+……+(1+3+5+……+39)
PrivateSubCommand34_Click()
t=0
m=1
sum=0
Do
t=t+m
sum=sum+t
m=______
LoopWhilem<=39
MsgBox"Sum="&sum
EndSub
为保证程序正确完成上述功能,空白处应填入的语句是
A)m+1
B)m+2
C)t+1
D)t+2
(35)下列程序的功能是返回当前窗体的记录集
SubGetRecNum()
DimrsAsObject
Setrs=______
MsgBoxrs.RecordCount
EndSub
为保证程序输出记录集(窗体记录源)的记录数,空白处应填入的语句是
A)Recordset
B)Me.Recordset
C)RecordSource
D)Me.RecordSource
(9)在VBA中要将数值表达式的值转换为字符串,应使用函数【9】。
(10)运行下列程序,输入如下两行:
Hi,
Iamhere.
弹出的窗体中的显示结果是【10】。
PrivateSubCommand11_Click()
DimabcAsString,sumAsstring
sum=""
Do
abc=InputBox("输入abc")
IfRight(abc,1)="."ThenExitDo
sum=sum+abc
Loop
MsgBoxsum
EndSub
(11)运行下列程序,窗体中的显示结果是:
x=【11】。
OptionCompareDatabase
DimxAsInteger
PrivateSubForm_Load()
x=3
EndSub
PrivateSubCommand11_Click()
StaticaAsInteger
DimbAsInteger
b=x^2
fun1x,b
fun1x,b
MsgBox"x="&x
EndSub
Subfun1(ByRefyAsInteger,ByValzAsInteger)
y=y+z
z=y-z
EndSub
(12)“秒表”窗体中有两个按钮(“开始/停止”按钮bOK,“暂停/继续”按钮bPus);一个显示计时的标签1Num;窗体的“计时器间隔”设为100计时精度为0.1秒。
要求:
打开窗体如图1所示;第一次单击“开始婷止”按钮,从0开始滚动显示计时(见图2);10秒时单击“暂停/继续”按钮,显示暂停(见图3),但计时还在继续;若20秒后再次单击“暂停/继续”按钮,计时会从30秒开始继续滚动显示;第二次单击“开始/停止”按钮,计时停止,显示最终时间(见图4)。
若再次单击“开始/停止”按钮可重新从0开始计时。
相关的事件程序如下。
请在空白处填入适当的语句,使程序可以完成指定的功能。
OptionCompareDatabase
Dimflag,pauseAsBoolean
PrivateSubbOKClick()
flag=【12】
Me!
bOK.Enabled=True
Me!
bPus.Enabled=flag
EndSub
PrivateSubbPus_Click()
pause=Notpause
Me!
bOK.Enabled=NotMe!
bOK.Enabled
EndSub
PrivateSubFormOpen(CancelAsInteger)
flag=False
pause=False
Me!
bOK.Enabled=True
Me!
bPus.Enabled=False
EndSub
PrivateSubFormTimer()
StaticcountAsSingle
Ifflag=TrueThen
Ifpause=FalseThen
Me!
1Num.Caption=Round(count,1)
EndIf
count=【13】
Else
count=0
EndIf
EndSub
(13)数据库中有“学生成绩表”,包括“姓名”、“平时成绩”、“考试成绩”和“期末总评”等字段。
现要根据“平时成绩”和“考试成绩”对学生进行“期末总评”。
规定:
“平时成绩”加“考试成绩”大于等于85分,则期末总评为“优”,“平时成绩”加“考试成绩”小于60分,则期末总评为“不及格”,其他情况期末总评为“合格”。
下面的程序按照上述要求计算每名学生的期末总评。
请在空白处填入适当的语句,使程序可以完成指定的功能。
PrivateSubCommand0_Click()
DimdbAsDAO.Database
DimrsAsDAO.Recordset
Dimpscj,kscj,qmzpAsDAO.Field
DimcountAsInteger
Setdb=CurrentDb()
Setrs=db.OpenRecordset("学生成绩表")
Setpscj=rs.Fields("平时成绩")
Setkscj=rs.Fields("考试成绩")
Setqmzp=rs.Fields("期末总评")
count=0
DoWhileNotrs.EOF
【14】
Ifpscj+kscj>=85Then
qmzp="优"
ElseIfpscj+kscj<60Then
qmzp="不及格"
Else
qmzp="合格"
EndIf
rs.Update
count=count+1
【15】
Loop
rs.Close
db.Close
Setrs=Nothing
Setdb=Nothing
MsgBox"学生人数:
"&count
EndSub
2010年9月
(19)下列表达式计算结果为数值类型的是
A)#5/5/2010#-#5/1/2010#
B)“102”>“11”
C)102=98+4
D)#5/1/2010#+5
(26)要将一个数字字符串转换成对应的数值,应使用的函数是
A)Val
B)Single
C)Asc
D)Space
(27)下列变量名中,合法的是
A)4A
B)A-1
C)ABC_1
D)private
(28)若变量i的初值为8,则下列循环语句中循环体的执行次数为
DoWhilei<=17
i=i+2
Loop
A)3次
B)4次
C)5次
D)6次
(29)InputBox函数的返回值类型是
A)数值
B)字符串
C)变体
D)视输入的数据而定
(30)下列能够交换变量X和Y值的程序段是
A)Y=X:
X=Y
B)Z=X:
Y=Z:
X=Y
C)Z=X:
X=Y:
Y=Z
D)Z=X:
W=Y:
Y=Z:
X=Y
(31)窗体中有命令按钮Commandl,事件过程如下:
PublicFunctionf(xAsInteger)AsInteger
DimyAsInteger
x=20
y=2
f=x*y
EndFunction
PrivateSubCommandl_Click()
DimyAsInteger
StaticxAsInteger
x=10
y=5
y=f(x)
Debug.Printx;y
EndSub
运行程序,单击命令按钮,则立即窗口中显示的内容是
A)105
B)1040
C)205
D)2040
(32)窗体中有命令按钮Commandl和文本框Text1,事件过程如下:
Functionresult(ByValxAsInteger)AsBoolean
If×Mod2=0Then
result=True
Else
result=False
EndIf
EndFunction
PrivateSubCommandl_Click()
x=Val(InputBox(“请输入一个整数”))
If______Then
Text1=Str(x)&“是偶数.”
Else
Text1=Str(x)&“是奇数.”
EndIf
EndSub
运行程序,单击命令按钮,输入19,在Text1中会显示“19是奇数”.那么在程序的空白处应填写
A)result(x)=“偶数”
B)result(x)
C)resuIt(x)=“奇数”
D)NOTresult(x)
(33)窗体有命令按钮Commandl和文本框Textl,对应的事件代码如下:
PrivateSubCommandl_Click()
Fori=1To4
x=3
Forj=1To3
Fork=1To2
x=x+3
Nextk
Nextj
Nexti
Text1.Value=Str(x)
EndSub
运行以上事件过程,文本框中的输出是
A)6
B)12
C)18
D)21
(34)窗体中有命令按钮run34,对应的事件代码如下:
PrivateSubrun34_Enter()
DimnumAsInteger,aAsInteger,bAsInteger,iAsInteger
Fori=1To10
num=InputBox(“请输入数据:
”,“输入”)
IfInt(num/2)=num/2Then
a=a+1
Else
b=b+1
EndIf
Nexti
MsgBox(“运行结果:
a=”&Str(a)&“,b=”&Str(b))
EndSub
运行以上事件过程,所完成的功能是
A)对输入的10个数据求累加和
B)对输入的10个数据求各自的余数,然后再进行累加
C)对输入的10个数据分别统计奇数和偶数的个数
D)对输入的10个数据分别统计整数和非整数的个数
(35)运行下列程序,输入数据8,9,3,0后,窗体中显示结果是
PrivateSubForm_click()
DimsumAsInteger,mAsInteger
sum=0
Do
m=InputBox(“输入m”)
sum=sum+m
LoopUntilm=0
MsgBoxsum
EndSub
A)0
B)17
C)20
D)21
(9)在VBA中要判断一个字段的值是否为Null,应该使用的函数是【9】。
(10)一下列程序的功能是求方程:
x2十y2=1000的所有整数解。
请在空白处填入适当的语句,使程序完成指定的功能。
PrivateSubCommandl_Click()
Dim×asinteger,yasinteger
Forx=-34To34
Fory=-34To34
If【10】Then
Debug.Printx,y
EndIf
Nexty
Nextx
EndSub
(11)下列程序的功能是求算式:
1+1/2!
+1/3!
+1/4!
+……前10项的和(其中n!
的含义是n的阶乘)。
请在空白处填入适当的语句,使程序完成指定的功能。
PrivateSubCommandl_Click()
Dimiasinteger,sassingle,aassingle
a=1:
s=0
Fori=1To10
a=【11】
s=s+a
Nexti
Debug.Print“1+1/2!
十1/3!
+.…=”;s
EndSub
(12)在窗体中有一个名为Command12的命令按钮,Click事件功能是:
接收从键盘输入的10个大于0的不同整数,找出其中的最大值和对应的输入位置。
请在空白处填入适当语句,使程序可以完成指定的功能。
PrivateSubCommand12_Click()
max=0
maxn=0
fori=1To10
num=Val(InputBox(‘,请输入第“&i&”个大于0的整数:
“))
If【12】Then
max=num
maxn=【13】
EndIf
Nexti
MsgBox(”最大值为第“&maxn&”个输入的“&max)
EndSub
(13)数据库的”职I基本情况表“有”姓名“和”职称“等字段,要分别统计教授、副教授和其他人员的数量。
请在空白处填入适当语句,使程序可以完成指定的功能。
PrivateSubCommands_Click()
DimdbAsDAO.Database
DimrsAsDAO.Recordset
DimzcAsDAO.Field
DimCountlAsInteger,Count2AsInteger,Count3AsInteger
Setdb=CurrentDb()
Setrs=db.OpenRecordset(”职工基本情况表“)
Setzc=rs.Fields(”职称“)
Countl=0:
Count2=0:
Count3=0
DoWhileNot【14】
SelectCasezc
CaseIs=”教授“
Countl=Countl+1
CaseIs=”副教授“
Count2=Count2+1
CaseElse
Courit3=Count3+1
EndSelect
【15】
Loop
rs.Close
Setrs=Nothing
Setdb=Nothing
MsgBox”教授:
“&Count1&”,副教授:
“&Count2&”,其他:
“&count3
EndSub
2010年3月
(21)在调试VBA程序时,能自动被检查出来的错误是
A)语法错误
B)逻辑错误
C)运行错误
D)语法错误和逻辑错误
(23)在已建窗体中有一命令按钮(名为Commandl),该按钮的单击事件对应的VBA代码为:
PrivateSubCommandl_Click()
subT.Form.RecordSource="select*from雇员"
EndSub
单击该按钮实现的功能是
A)使用select命令查找“雇员”表中的所有记录
B)使用select命令查找并显示“雇员”表中的所有记录
C)将subT窗体的数据来源设置为一个字符串
D)将subT窗体的数据来源设置为“雇员”表
(27)能够实现从指定记录集里检索特定字段值的函数是
A)Nz
B)Find
C)Lookup
D)DLookup
(28)如果X是一个正的实数,保留两位小数、将千分位四舍五入的表达式是
A)0.01*Int(x+0.05)
B)0.01*Int(100*(X+0.005))
C)0.01*Int(x+0.005)
D)0.01*Int(100*(X+0.05))
(29)在模块的声明部分使用“OptionBase1”语句,然后定义二维数组A(2to5,5),则该数组的元素个数为
A)20
B)24
C)25
D)36
(30)由“Fori=1To9Step-3”决定的循环结构,其循环体将被执行
A)0次
B)1次
C)4次
D)5次
(31)在窗体上有一个命令按钮Commandl和一个文本框Textl,编写事件代码如下:
PrivateSubCommand1_Click()
Dimi,j,x
Fori=1To20step2
x=0
Forj=To20step3
x=x+1
Nextj
Nexti
Textl.Value=Str(x)
EndSub
打开窗体运行后,单击命令按钮,文本框中显示的结果是
A)1
B)7
C)17
D)400
(32)在窗体上有一个命令按钮Commandl,编写事件代码如下:
PrivateSubCommandl_Click()
DimyAsInteger
y=0
Do
y=InputBox("y=")
If(yMod10)+Int(y/10)=10ThenDebug.Printy;
LoopUntily=0
EndSub
打开窗体运行后,单击命令按钮,依次输入10、37、50、55、64、20、28、19、-19、0,立即窗口上输出的结果是
A)375564281919
B)105020
C)1050200
D)3755642819
(33)在窗体上有一个命令按钮Commandl,编写事件代码如下:
PrivateSubCommand1_Click()
DimxAsInteger,yAsInteger
x=12:
y=32
CallProc(x,y)
Debug.Printx;y
EndSub
PublicSubProc(nAsInteger,ByValmAsInteger)
n=nMod10
m=mMod10
EndSub
打开窗体运行后,单击命令按钮,立即窗口上输出的结果是
A)232
B)123
C)22
D)1232
34)在窗体上有一个命令按钮Commandl,编写事件代码如下:
PrivateSubCommandl_Click()
Dimd1AsDate
Dimd2AsDate
dl=#12/25/2009#
d2=#1/5/2010#
MsgBoxDateDiff(”ww”,d1,d2)
EndSub
打开窗体运行后,单击命令按钮,消息框中输出的结果是
A)1
B)2
C)10
D)11
(35)下列程序段的功能是实现“学生”表中“年龄”字段值加1
DimStrAsString