VBA理论练习题第1页共42页第一部分(模块与VBA编程基础)一、选择题(1~17):1.VBA中定义符号常量可以用关键字A)ConstB)DimC)PublicD)Static2.Sub过程和Function过程最根本的区别是A)Sub过程的过程名不能返回值,而Function过程能通过过程名返回值B)Sub过程可以使用Call语句或直接使用过程名,而Function过程不能C)两种过程参数的传递方式不同D)Function过程可以有参数,Sub过程不能有参数3.定义了二维数组A(2to5,5),则该数组的元素个数为A)25B)36C)20D)244.已知程序段:s=0Fori=1To10step2s=s+1i=i*2Nexti当循环结束后,变量i的值为a,变量s的值为b。a.A)10B)11C)22D)16b.A)3B)4C)5D)65.以下内容中不属VBA提供的数据验证函数是A)IsTextB)IsDateC)IsNumericD)IsNull6.已定义好有参函数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)ParamArray8.在VBA代码调试过程中,能够显示出所有在当前过程中变量声明及变量值信息的是VBA理论练习题第2页共42页A)快速监视窗口B)监视窗口C)立即窗口D)本地窗口9.VBA的逻辑值进行算术运算时,True值被当作A)0B)-1C)1D)任意值10.VBA中不能进行错误处理的语句结构是A)OnErrorThen标号B)OnErrorGoto标号C)OnErrorResumeNextD)OnErrorGo10011.VBA中用实际参数a和b调用有参过程Area(m,n)的正确形式是A)Aream,nB)Areaa,bC)CallArea(m,n)D)CallAreaa,b12.给定日期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=0Fori=1TO3Forj=-4To-1n=n+1NextjNextiA)0B)3C)4D)1215.假设有如下Sub过程:Subsfun(xAsSingle,YAsSingle)t=xx=t/yy=tmody‘mod求余计算例7mod4=3EndSubVBA理论练习题第3页共42页在窗体中添加一个命令按钮(名为Comnndl),编写如下事件过程PrivateSubCommandl_Click()DimaAsSinSleDimbAsSinSlea=5:b=4sfun(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,4chr与Asc互逆例asc(a)=97;chr(97)=aasc(chr(97))=97打开窗体运行后,单击命令按钮,消息框中有两行输出,内容分别为A)1和1B)1.25和lC)1.25和4D)5和416.有如下VBA程序段:sum=0n=0Fori=1TO5x=n/in=n+1slim=sumNexti以上For循环计算sum,完成的表达式是A)1+1/1+2/3+3/4+4/5B)1+1/2+1/3+1/4+1/5C)1/2+2/3+3/4+4/5D)1/2+1/3+1/4+1/517.在窗体中有一个命令按钮runl6,对应的事件代码如下:PrivateSubrunl6_Enter()DimnumAsIntegerDimaAsIntegerDimbAsInteger.DimiAsIntegerFori=1To10num=InputBox(请输入数据:,输入,1)ifInt(num/2)=num/2Then‘Int取整函数例int(3.5)=3a=a+1Elseb=b+1VBA理论练习题第4页共42页EndlfNextIMsgBox(运行结果: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)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函数的功能是显示消息信息。VBA理论练习题第5页共42页16.在VBA中双精度的类型标识是Double。17.在VBA中,分支结构根据条件(或条件表达式)选择执行不同的程序语句。18.VBA的逻辑值在表达式当中进行算术运算时,True值被当作-1、False值被当作0来处理。19.VBA编程中,要得到[15,75]上的随机整数可以用表达式Int(15+61*Rnd).20.设有如下代码:X=1Dox=x+2LoopUntilx=7(或x=7或x6)运行程序,要求循环体执行3次后结束循环,请在空白处填入适当的语句21.设有以下窗体单击事件过程:PrivateSubForm_Click()a=1fori=1to3SelectCaseiCase1,3a=a+1Case2,4a=a+2endSelectNextiMsgBoxaEndSub打开窗体运行后,单击窗体,则消息框的输出内容是5。22.在窗体中添加一个命令按钮(名为Commandl)和一个文本框(名为Textl),编写事件代码如下PrivateSubCommandlClick()DimaAsInteger,yAsIntegerx=5:y=7:z=0Me!Textl=CallPl(x,x,z)Me!Textl=zEndSubPrivatep1(aAsInteger,bAsInteger,cAsInteger)VBA理论练习题第6页共42页c=a+bEndSub打开窗体后,单击命令按钮,文本框中显示的内容是1223.在下面的VBA程序段运行时,内层循环的循环次数是9Form=0To7Step3Forn=m-1Tom+1NextnNextm24.在窗体中使用一个文本框(名为numl)接受输入值,有一个命令按钮run,单击事件代码如下PrivateSubrun_Click()IfMe!num1=60ThenResult="及格"ElseIfMe!numl70ThenResult="通过"ElseIfMe!numl85ThenResult="合格"EndSub打开窗体后,若通过文本框输入的值为85,单击命令按钮,输出结果是及格。25.在窗体中有一个名为Command25的命令按钮,Click事件代码如下。该事件的完整功能是:接受从键盘输入的10个大于0的整数,找出其中的最大值和对应的输入位置。请依据上述功能要求将程序补充完整。PrivateSubCommand25_Click()Max=0max_n=0Fori=lTo10num=Val(InputBox("请输入第"&i&"个大于0的整数:"))IfnummaxThenmax=nummax_n=iEndIfNextiMsgBox(最大值为第&max_n&个输入的&max)EndSubVBA理论练习题第7页共42页第二部分(数据库编程)一、选择题(1~9)1.以下内容中不属VBA提供的数据验证函数是A)IsNullB)IsDateC)lsNumericD)IsText2.VBA定时”操作中,需要设置窗体的“计时器间隔(TimerInterval)”属性值。其计量单位是A)微秒B)毫秒C)秒D)分钟3.能够实现从指定记录集里检索特定字段值的函数是A)NzB)DSumC)RndD)DLookup4.DAO模型层次中处在最顶层的对象是A)DBEngineB)WorkspaceC)DatabaseD)RecordSet5.ADO对象模型中可以打开RecordSet对象的是A)只能是Connection对象B)只能是Command对象C)可以是Connection对象和Command对象D)不存在6.InputBox函数返回值的类型为A)数值B)字符串(错误)注意:正确答案为D)C)变体D)数值或字符串(视输入的数据而定)InputBox$返回字符串InputBox返回数值或字符串7.ADO的含义是A)开放数据库互连应用编程接12B)数据库访问对象C)动态链接库D)Active数据对象8.执行下面的语句后,所弹出的信息框外观样式为MsgBox"AAAA",vbOKCancel+vbQuestion,"BBBB"注:vbQuestion等价于32VBA理论练习题第8页共42页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.窗体的计时器触发事件激发的时间间隔是通过计时器间隔(