VBA理论练习题.docx

上传人:b****3 文档编号:5305383 上传时间:2022-12-15 格式:DOCX 页数:45 大小:557.13KB
下载 相关 举报
VBA理论练习题.docx_第1页
第1页 / 共45页
VBA理论练习题.docx_第2页
第2页 / 共45页
VBA理论练习题.docx_第3页
第3页 / 共45页
VBA理论练习题.docx_第4页
第4页 / 共45页
VBA理论练习题.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

VBA理论练习题.docx

《VBA理论练习题.docx》由会员分享,可在线阅读,更多相关《VBA理论练习题.docx(45页珍藏版)》请在冰豆网上搜索。

VBA理论练习题.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1