VBA理 论 练 习 题 第 21 页 共 43 页
年9月)
Public x As Integer ‘x为全局变量(位置:通用声明段) ‘Dim y As Integer ‘y为模块变量(位置:通用声明段)
Private Sub Commandl_Click()
x=10 ‘x为全局变量 Call s1 Call s2
MsgBox x ‘x为全局变量 End Sub
Private Sub_s1( )
x=x+20 ‘x为全局变量 End Sub
PrivateSub_s2( )
Dim x As integer ‘x为局部变量 x=x+20 ‘x为局部变量 End Sub
打开窗体运行后,单击命令按钮,则消息框的输出结果是。 A) 10 B) 30 C) 40 D) 50
解析:本题使用Call调用子过程s1、s2。x=10在调用子过程s1后,x=30,但由于在s1中直接使用变量,所以该值的作用范围是局部的,即只限于s1子过程中,没有传回。在调用s2时,由于使用Dim?As关键字定义x,所以其值是模块范围的。在消息框中输出的值,是从子过程s2传回的值(注意:解释有错,返回
应是调用S1时的x值。)。
20.有如下语句:(2007年4月) s=Int(100*Rnd)
执行完毕后,s的值是——。
A)[0,99]的随机整数 B)[0,100]的随机整数 C)11,99]的随机整数 D)[1,100]的随机整数
解析:随机数函数Rnd(<数值表达式>)用于产生一个小于1但大于。的值,该数值为单精度类型。Int(数值表达式)是对表达式进行取整操作,它并不做“四舍五人”运算,只是取出“数值表达式’’的整数部分。 21.InputBox函数的返回值类型是。(2007年4月) A)数值 B)字符串
VBA理 论 练 习 题 第 22 页 共 43 页
C)变体 D)数值或字符串(视输入的数据而定)
解析:InputBox的返回值是一个数值或字符串。当省略尾部的“$”时,InputBox函数返回一个数值,此时不能输入字符串。如果不省略“$”,则既可输入数值也可输人字符串,但其返回值是一个字符串。因此,如果需要输入数值,并且返回的也是数值,则应省略“$”;而如果需要输入字符串,并且返回的也是字符串,则不能省略“$”。如果不省略“$”,且输人的是数值,则返回字符串。当需要该数值参加运算时,必须用Val函数将其转换为数值。
22.在窗体中添加一个名称为Command 1的命令按钮,然后编写如下事件代码:(2007年4月)
Private Sub Commandl_Click() a=75
If a>60 Then k=l
ElseIf a>70 Then k=2
ElseIf a>80 Then k=3
ElseIf a>90 Then k=4 End If MsgBox k End Sub
打开窗体运行后,单击命令按钮,则消息框的输出结果是。 A)1 B)2 C)3 D)4
解析:a=75满足条件“a>60'’,执行THEN后的语句,将1赋值给变量k,然后结束条件判断,将k的值1输出到消息框,所以消息框的结果是1。 23.设有如下窗体单击事件过程:(2007年4月) Private Sub Form_Click() a=1
For i=1 To 3 Select Case i Case 1,3 a=a+1 Case 2,4
VBA理 论 练 习 题 第 23 页 共 43 页
a=a+2 End Select Next i MsgBox a End Sub
打开窗体运行后,单击窗体,则消息框的输出结果是。
A)3 B) 4 C)5 D)6
解析:SelectCase结构运行时,首先计算“表达式’’的值,它可以是字符串或者数值变量或表达式。然,会依次计算测试每个Cas,表达式的值,直到值匹配成功,程序会转入相应的Case结构内执行语句。本题,当i=1和3时,执行a=a+1,当i=2时,a=a+2,所以a=1+1+2+1=5。 24.设有如下程序:(2007年4月)
Private Sub Commandl_Click()
Dim sum As Double,x As Double Sum=0 n=0
For i=1 To 5 x=n/i n=n+1
sum=sum+x Next i End Sub
该程序通过For循环来计算一个表达式的值,这个表达式是。 A)1+1/2+2/3+3/4+4/5 B)1+1/2+1/3+1/4+1/5 C)1/2+2/3+3/4+4/5 D)1/2+1/3+1/4+1/5
解析:当i=1时,sum=0+0/1;当i=2时,sum:0+0/1+1/2;当i=3时,sum:0+0/1+1/2+2/3;i=4时,sum=0+0/1+1/2+2/3+3/4;当i=5时,sum:0+0/1+1/2+2/3+3/4+4/5,即For循环是用计算表达式“1/2+2/3十3/4+4/5”的。 25.下列Case语句中错误的是。(2007年4月) A) Case 0 To 10 B) Case Is>10 C)Case Is>10 And Is<50 D)Case 3,5,Is>10
解析:Case表达式可以是下列4种格式之一:单一数值或一行并列的数值,用来与“表达式”的值相比较。成员间以逗号隔开;由关键字To分割开两个数值或
VBA理 论 练 习 题 第 24 页 共 43 页
表达式之间的范围;关键字Is接关系运算符;关键字CaseElse后的表达式,是在前面的Case条件[不满足时执行的。本题选项C中用的是逻辑运算符And连接两个表达式,所以不对,应该以逗号隔开。
26.如下程序段定义了学生成绩的记录类型,由学号、姓名和三门课程成绩(百分制)组成。 Type Stud No As Integer name As String score(1 to 3) As Single End Type 若对某个学生的各个数据项进行赋值,下列程序段中正确的是。(2007年4月) A)Dim S As Stud B)Dim S As Stud Stud.no=1001 S.no=1001
Stud.name=”舒宜” S.name=”舒宜” Stud.score=78,88,96 S.score=78,88,96 C)Dim S As Stud D)Dim S As Stud Stud.no=1001 S.no=1001
Stud.name=”舒宜” S.name=”舒宜” Stud.score(1)=78 S.score(1)=78 Siud.score(2)=88 S.score(2)=88 Stud.score(3)=96 S.score(3)=96
解析:用户定义数据类型是使用Type语句定义的数据类型。用户定义的数据类型可以包含一个或多个任意数据类型的元素。由Dim语句可创建用户定义的数组和其他数据类型。用户定义类型变量的取值,可以指明变量名及分量名,两者之间用句点分隔。本题中选项A、C中变量名均用的是类型名,所以错误。score(1 to 3)As Single定义了3个单精度数构成的数组,数组元素为score(1)-score(3)。 27.使用Function语句定义一个函数过程,其返回值的类型——。(2007年9月) A)只能是符号常量 B)是除数组之外的简单数据类型 C)可在调用时由运算过程决定 D)由函数定义时As子句声明
解析:函数的参数和返回值都有特定的值与之相对应,函数的返回值由函数定义时As子句声明。
28.在过程定义中有语句:(2007年9月) Private Sub GetData(ByRef f As Integer)
S.no=1001 S.name=”王林” S.score(1)=90 S.score(2)=95 S.score(3)=98 VBA理 论 练 习 题 第 25 页 共 43 页
其中ByRef的含义是。
A)传值调用 B)传址调用 C)形式参数 D)实际参数
解析:ByRey在过程定义中为可选项,表示该参数按地址传递。ByRey是VBA的默认选项。ByVal表示参数按值传递。
29.在Access中,DAO的含义是 。(2007年9月) A)开放数据库互相应用编辑窗ICl B)数据库访问对象 C)Active数据对象 D)数据库动态连接库
解析:数据库访问对象(DAO)是VBA提供的一种数据访问接口,包括数据库创建、表和查询的定义等工具,借助VBA代码可以灵活地控制数据访问的各种操作。 30.下列不是分支结构语句的是 。(2007年9月)
A)If?Then?EndIf B)While?Wend
C)If?Then?Else?Endlf D)Select?Case?EndSelect 解析:While…Wend为循环语句,其语句结构中没有分支语句。
31.在窗体中使用一个文本框(名为n)接收输入的值,有一个命令按钮run,事件代码如下:
Private Sub run_Click() Result=\ For i=1 To Me!n Forj=1 To Me!n result=result+\ Nextj Result=result+Chr(13)+Chr(10) Next i MsgBox result End Sub result的值是****■■换行符****■■换行符****■■换行符****■■换行 注意: 将Result=\及MsgBox result放在for ?next i 内将如何?见3131(改) 打开窗体后,如果通过文本框输入的值是4,单击命令按钮后输出的图形是 。(2007年9月)
A)* * * * B) *