A.按值传递 B.按地址传递 C.ByRef传递 D.按形参传递 参考答案:
1.C2.B3.B4.B5.B6.C7.D8.B9.A10.A11.A12.B13.A14.A VBA程序设计基础
1.给定日期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)) 2.已知程序段: s = 0
For i = 1 To 10 Step 2 s = s + 1 i = i * 2 Next i
当循环结束后,变量i的值为______,变量s的值为 A.10 4 B.11 3 C.22 3 D.16 4
3.VBA中去除前后空格的函数是
A.LTrim B.RTrim C.Trim D.Ucase
4.VBA中不能进行错误处理的语句结构是
A.On Error Then 标号 B.On Error Goto 标号 C.On Error Resume Next D.On Error Goto 0
5.表达式4+5\\6*7/8 Mod 9的值是
A.4 B.5 C.6 D.7 6.设a=6,则执行 x=IIF(a>5,-1,0) 后,x的值为 A.6 B.5 C.0 D.-1
7.ADO对象模型主要有Connection、Command、______、Field和Error5个对象。 A.Database B.Workspace C.RecordSet D.DBEngine
8.ADO对象模型层次中可以打开RecordSet对象的是 A.只能是Connection对象 B.只能是Command对象 C.可以是Connection对象和Command对象 D.不存在
9.On Error Goto 0语句的含义是
A.忽略错误并执行下一条语句 B.取消错误处理
C.遇到错误执行定义的错误 D.退出系统
10.假定有以下两个过程: Sub S1(ByVal x As Integer, ByVal y As Integer) Dim t As Integer t = x x = y y = t End Sub
Sub S2(x As Integer, y As Integer)
Dim t As Integer t = x x = y y = t End Sub
则以下说法中正确的是 A.用过程S1可以实现交换两个变量的值的操作,S2不能实现
B.用过程S2可以实现交换两个变量的值的操作,S1不能实现
C.用过程S1和S2都可以实现交换两个变量的值的操作 D.用过程S1和S2都不能实现交换两个变量的值的操作 11.假定有以下循环结构:
Do until 条件 循环体 Loop
则下列说法正确的是 A.如果\条件\是一个为-1的常数,则一次循环体也不执行 B.如果\条件\是一个为-1的常数,则至少执行一次循环体 C.如果\条件\是一个不为-1的常数,则至少执行一次循环体 D.不论\条件\是否为\真\,至少要执行一次循环体
12.执行下面的程序段后,x的值为 x = 5
For I = 1 To 20 Step 2 x = x + I \\ 5 Next I
A.21 B.22 C.23 D.24 13.以下可以得到\结果的VBA表达式为 A.\B.\C.2*5 & \D.2*5 + \
14.假定窗体的名称为fmTest,则把窗体的标题设置为\的语句是 D.Me.Name = \A.Me = \B.Me.Caption = \C.Me.Text = \15.以下程序运行后,消息框的输出结果是 a=sqr(3) b=sqr(2) c=a>b Msgbox c+2
A.-1 B.1 C.2 D.出错 16.执行语句:MsgBox \的信息框外观样式是 B. C. D. A.
+
vbQuestion,\之后,弹出
17.用于获得字符串Str从第2个字符开始的3个字符的函数是
A.Mid(Str,2,3) D.Left(Str,2,3) B.Middle(Str,2,3) C.Right(Str,2,3)
18.VBA程序的多条语句可以写在一行中,其分隔符必须使用符号
A.: B.' C.; D.,
19.VBA表达式3*3\\3/3的输出结果是
A.0 B.1 C.3 D.9
20.在窗体中添加一个命令按钮(名称为Command1),然后编写如下代码:
Private Sub Command1_Click() a=0:b=5:c=6 MsgBox a=b+c End Sub
窗体打开运行后,如果单击命令按钮,则消息框的输出结果为
A.11 B.a=11 C.0 D.False 21.在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() Dim a(10,10) For m=2 To 4 For n=4 To 5 a(m,n)=m*n Next n Next m
MsgBox a(2,5)+a(3,4)+a(4,5) End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果是 A.22 B.32 C.42 D.52 22.在窗体上添加一个命令按钮(名为Command1)和一个文本框(名为Text1),并在命令按钮中编写如下事件代码: Private Sub Command1_Click() m=2.17
n=Len(Str$(m)+Space(5))
第 16 页 共 21 页
Me!Text1=n End Sub
打开窗体运行后,单击命令按钮,在文本框中显示 A.5 B.8 C.9 D.10 23.在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() A=75
If A>60 Then I=1 If A>70 Then I=2 If A>80 Then I=3 If A>90 Then I=4 MsgBox I End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果是 A.1 B.2 C.3 D.4
24.在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() s=\ For I=6 To 2 Step -2 x=Mid(s,I,I) y=Left(s,I) z=Right(s,I) z=x & y & z Next I MsgBox z End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果是 A.AABAAB B.ABBABA C.BABBA D.BBABBA
25.在窗体中添加一个名称为Command1的命令按钮,然后编写如下程序: Public x As Integer
Private Sub Command1_Click() x=10 Call s1 Call s2 MsgBox x
End Sub Private Sub s1() x=x+20 End Sub Private Sub s2() Dim x As Integer x=x+20 End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果为 A.10 B.30 C.40 D.50 26.有如下语句: s=Int(100*Rnd) 执行完毕后,s的值是 A.[0,99]的随机整数 B.[0,100]的随机整数 C.[1,99]的随机整数 D.[1,100]的随机整数
27.在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码:
Private Sub Command1_Click( ) a = 75
If a>60 Then k = 1
ElseIf a>70 Then k = 2
ElseIf a>80 Then k = 3
ElseIf a>90 Then k = 4 EndIf MsgBox k End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果是 A.1 B.2 C.3 D.4
28.设有如下窗体单击事件过程:
Private Sub Form_Click( ) a = 1 For i= 1 To 3 Select Case i Case 1,3 a= a+1 Case 2,4 a = a+2
End Select Next i MsgBox a End Sub
打开窗体运行后,单击窗体,则消息框的输出的结果是 A.3 B.4 C.5 D.6 29.设有如下程序
Private Sub Command1_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
30.下列Case语句中错误的是 A.Case 0 To 10 B.Case Is>10
C.Case Is>10 And Is<50 D.Case 3,5,Is>10
31.在过程定义中有语句: Private Sub GetData(ByRef f As Integer) 其中\的含义是 A.传值调用 B.传址调用 C.形式参数 D.实际参数
32.在窗体中有一个标签Label0,标题为\测试进行中\;有一个命令按钮Command1;事件代码如下:
Private Sub Command1_Click( ) Label0.Caption = \标签\End Sub
Private Sub Form_Load( ) Form.Caption = \举例\
第 17 页 共 21 页
Command1.Caption = \移动\End Sub
打开窗体后单击命令按钮,屏幕显示 A. B. C. D.
33.在窗体中有一个标签Lb1和一个命令按钮Command1,事件代码如下:
Option Compare Database Dim a As String * 10 Private Sub Command1_Click( ) a = \ b = Len(a) Me.Lb1.Caption = b End Sub
打开窗体后单击命令按钮,窗体中显示的内容是 A.4 B.5 C.10 D.40 34.下列不是分支结构的语句是
A.If … Then … EndIf B.While … Wend
C.If … Then … Else … EndIf D.Select … Case … End Select 35.VBA程序流程控制的方式是
A.顺序控制和分支控制 B.顺序控制和循环控制 C.循环控制和分支控制 D.顺序、分支和循环控制 36.从字符串s中的第2个字符开始获得4个字符的子字符串函数是 A.Mid$(s,2,4) B.Left$(s,2,4) C.Right$(s,4) D.Left$(s,4)
37.语句Dim NewArray(10) As Integer的含义是
A.定义了一个整型变量且初值为10
B.定义了10个整数构成的数组
C.定义了11个整数构成的数组 D.将数组的第10元素设置为整型
38.不属于VBA提供的程序运行错误处理的语句结构是 A.On Error Then标号 B.On Error Goto标号 C.On Error Resume Next D.On Error Goto 0 39.ADO的含义是
A.开放数据库互连应用编程接口
B.数据库访问对象 C.动态链接库 D.Active数据对象
40.下列四种形式的循环设计中,循环次数最少的是 A.a = 5 : b = 8 Do a = a + 1 Loop While a < b B.a = 5 : b = 8 Do a = a + 1 Loop Until a < b C.a = 5 : b = 8 Do Until a < b b = b + 1 Loop D.a = 5 : b = 8 Do Until a > b a = a + 1 Loop
41.在窗体中有一个命令按钮run35,对应的事件代码如下: Private Sub run35_Enter( ) Dim num As Integer Dim a As Integer Dim b As Integer Dim i As Integer For i= 1 To 10
num = InputBox(\请输入数据:\输入\ If num/2 Then
a = a + 1 Else
Int(num/2)
=
b = b + 1 End If Next i
MsgBox(\运行结果:a=\& Str(a) &\ End Sub
运行以上事件所完成的功能是 A.对输入的10个数据求累加和
B.对输入的10个数据求各自的余数,然后再进行累加 C.对输入的10个数据分别统计有几个是整数,有几个是非整数
D.对输入的10个数据分别统计有几个是奇数,有几个是偶数
42.在VBA中,错误的循环结构是
A.Do While 条件式 循环体 Loop
B.Do Until 条件式 循环体 Loop C.Do Until 循环体 Loop 条件式 D.Do
循环体 Loop While 条件式 43.在过程定义中有语句: Private Sub GetDate(ByVal date As Integer)
其中\的含义是 A.传值调用 B.传址调用 C.形式参数 D.实际参数
44.在窗体中有一个命令按钮(名称为run34),对应的事件代码如下:
Private Sub run34_Click( ) Sum=0
For i=10 To 1 Step -2 sum=sum+i Next i
MsgBox sum End Sub
运行以上事件,程序的输出结果是
A.10 B.30 C.55 D.其他结果 45.在窗体中有一个名称为run35的命令按钮,单击该按钮从键盘接收学生成绩,如果输入的成绩不在0到100分之间,则要求重新输入;如果输入的成绩正确,则进入后续程序处理。run35命令按钮的Click的事件代码如下: Private Sub run35_Click( ) Dim flag As Boolean result=0 flag=True Do While flag
result=Val(InputBox(\请输入学生成绩:\输入\ If
result>=0
And
result<=100 Then
_____________ Else
MsgBox \成绩输入错误,请重新输入\ End If Loop
Rem 成绩输入正确后的程序代码略 End Sub
程序中有一空白处,需要填入一条语句使程序完成其功能。下列选项中错误的语句是 A.flag=False B.flag=Not flag C.flag=True D.Exit Do
46.发生在控件接收焦点之前的事件是 A.Enter B.Exit C.GotFocus D.LostFocus
47.在VBA中要打开名为\学生信息录入\的窗体,应使用的语句是
A.DoCmd.OpenForm \学生信息录入\
B.OpenForm \学生信息录入\C.DoCmd.OpenWindow \学生信息录入\
D.OpenWindow \学生信息录入\
48.要显示当前过程中的所有变量及对象的取值,可以利用的调试窗口是 A.监视窗口 C.立即窗口
B.调用堆栈 D.本地窗口
49.在VBA中,下列关于过程的描述中正确的是
A.过程的定义可以嵌套,但过程的调用不能嵌套
B.过程的定义不可以嵌套,但过程的调用可以嵌套 C.过程的定义和过程的调用均可以嵌套
D.过程的定义和过程的调用均不能嵌套
50.能够实现从指定记录集里检索特定字段值的函数是 A.DCount B.DLookup C.DMax D.DSum
51.下列四个选项中,不是VBA的条件函数的是 A.Choose B.If C.IIf D.Switch 52.设有如下过程: x=1 Do x=x+2
Loop Until ______ 运行程序,要求循环体执行3次后结束循环,空白处应填入的语句是 A.x<=7 B.x<7 C.x>=7 D.x>7
53.在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码: Private Sub Command1_Click() MsgBox f(24,18)
第 18 页 共 21 页
End Sub Public
Function
f(m
As
Integer,n As Integer) As Integer Do while m<>n Do while m>n m=m-n Loop Do While m 窗体打开运行后,单击命令按扭,则消息框的输出结果是 A.2 B.4 C.6 D.8 54.执行语句:MsgBox \ vbOKCancel+vbQuestion ,, 58.在窗体中有一个文本框Text1,编写事件代码如下: Private Sub Form_Click() X=val(Inputbox(\输入x的值\ Y=1 If X<>0 Then Y = 2 Text1.Value = Y End Sub 打开窗体运行后,在输入框中输入整数12,文本框Text1中输出的结果是 A.1 B.2 C.3 D.4 59.在窗体中有一个命令按钮Command1和一个文本框Text1,编写事件代码如下: Private Sub Command1_Click() For I =1 To 4 x = 3 For j = 1 To 3 For k = 1 To 2 x = x + 3 Next k Next j Next I Text1.value = Str(x) End Sub 打开窗体运行后,单击命令按钮,文本框Text1输出的结果是 A.6 B.12 C.18 D.21 60.下列过程的功能是:通过对象变量返回当前窗体的Recordset属性记录集引用,消息框中输出记录集的记录(即窗体记录源)个数。 Sub GetRecNum() Dim rs As Object Set rs = Me.Recordset B.布尔型 D.指针型 MsgBox ______ End Sub 程序空白处应填写的是 A.Count B.rs.Count C.RecordCount D.rs.RecordCount 61.在调试VBA程序时,能自 动被检查出来的错误是 A.语法错误 B.逻辑错误 C.运行错误 D.语法错误和逻辑错误 62.在已建窗体中有一命令按钮(名为Command1),该按钮的单击事件对应的VBA代码为: Private Sub Command1_Click() subT.Form.RecordSource = \雇员\End Sub 单击该按钮实现的功能是 A.使用select命令查找\雇员\表中的所有记录 B.使用select命令查找并显示\雇员\表中的所有记录 C.将subT窗体的数据来源设置为一个字符串 D.将subT窗体的数据来源设置为\雇员\表 63.下列关于对象\更新前\事件的叙述中,正确的是 A.在控件或记录的数据变化后发生的事件 B.在控件或记录的数据变化前发生的事件 C.当窗体或控件接收到焦点时发生的事件 D.当窗体或控件失去了焦点时发生的事件 64.能够实现从指定记录集里检索特定字段值的函数是 A.Nz B.Find C.Lookup D.DLookup 65.如果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)) 66.由\i=1 To 9 Step -3\决定的循环结构,其循环体将被 执行 A.0次B.1次C.4次D.5次 67.在窗体上有一个命令按钮Command1和一个文本框Text1,编写事件代码如下: Private Sub Command1_Click() Dim i, j, x For i = 1 To 20 Step 2 x = 0 For j = i To 20 Step 3 x = x + 1 Next j Next i Text1.Value = Str(x) End Sub 打开窗体运行后,单击命令按钮,文本框中显示的结果是 A.1 B.7 C.17 D.400 68.在窗体上有一个命令按钮Command1,编写事件代码如下: Private Sub Command1_Click() Dim y As Integer y = 0 Do y = InputBox(\ If (y Mod 10) + Int(y / 10) = 10 Then Debug.Print y; Loop Until y = 0 End Sub 打开窗体运行后,单击命令按钮,依次输入10、37、50、55、64、20、28、19、-19、0,立即窗口上输出的结果是 A.37 55 64 28 19 19 B.10 50 20 C.10 50 20 0 D.37 55 64 28 19 69.在窗体上有一个命令按钮Command1,编写事件代码如下: Private Sub Command1_Click() Dim d1 As Date Dim d2 As Date d1 = #12/25/2009# d2 = #1/5/2010# MsgBox DateDiff(\ \之后,弹出的信息框 A.标题为\、框内提示符为\惊叹号\、提示内容为\ B.标题为\、框内提示符为\惊叹号\、提示内容为\ C.标题为\、框内提示符为\问号\、提示内容为\D.标题为\、框内提示符为\问号\、提示内容为\ 55.用于获得字符串S最左边4个字符的函数是 A.Left(S,4) B.Left(S,1,4) C.Leftstr(S,4) D.Leftstr(S,0,4) 56.下列数据类型中,不属于VBA的是 A.长整型 C.变体型 的是 A.Dim A[3,4] As Integer B.Dim A(3,4) As Integer C.Dim A[3;4] As Integer D.Dim A(3;4) As Integer 57.下列数组声明语句中,正确 第 19 页 共 21 页 d1, d2) End Sub 打开窗体运行后,单击命令按钮,消息框中输出的结果是 A.1 B.2 C.10 D.11 70.下列变量名中,合法的是 A.4A B.A-1 C.ABC_1 D.private 71.若变量i的初值为8,则下列循环语句中循环体的执行次数为 Do While i<=17 i= i+2 Loop A.3次 B.4次 C.5次 D.6次 72.InputBox函数的返回值类型是 A.数值 B.字符串 C.变体 D.视输入的数据而定 73.下列能够交换变量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 74.窗体中有命令按钮Command1,事件过程如下: Public Function f(x As Integer) As Integer Dim y As Integer x=20 y=2 f=x*y End Function Private Sub Command1_Click() Dim y As Integer Static x As Integer x=10 y=5 y=f(x) Debug.Print x;y End Sub 运行程序,单击命令按钮,则立即窗口中显示的内容是 A.10 5 B.10 40 C.20 5 D.20 40 75.窗体中有命令按钮Command1和文本框Text1,事件过程如下: Function result(ByVal x As Integer) As Boolean If x Mod 2=0 Then result=True Else result=False End If End Function Private Sub Command1_Click() x=Val(InputBox(\请输入一个整数\ If ______ Then Text1=Str(x) & \是偶数.\ Else Text1=Str(x) & \是奇数.\ End If End Sub 运行程序,单击命令按钮,输入19,在Text1中会显示\是奇数.\。那么在程序的空白处应填写 A.result(x)= \偶数\B.result(x) C.result(x)= \奇数\D.NOT result(x) 76.窗体有命令按钮Command1和文本框Text1,对应的事件代码如下: Private Sub Command1_Click() For i=1 To 4 x = 3 For j = 1 To 3 For k = 1 To 2 x = x + 3 Next k Next j Next i Text1.Value = Str(x) End Sub 运行以上事件过程,文本框中的输出是 A.6B.12C.18D.21 77.窗体中有命令按钮run34,对应的事件代码如下: Private Sub run34_Enter() Dim num As Integer,a As Integer,b As Integer,i As Integer For i=1 To 10 num=InputBox(\请输入数据:\输入\ If Int(num/2)=num/2 Then a=a+1 Else b=b+1 End If Next i MsgBox(\运行结果:a=\Str(a) & \End Sub 运行以上事件过程,所完成的功能是 A.对输入的10个数据求累加和 B.对输入的10个数据求各自的余数,然后再进行累加 C.对输入的10个数据分别统计奇数和偶数的个数 D.对输入的10个数据分别统计整数和非整数的个数 78.运行下列程序,输入数据8、9、3、0后,窗体中显示结果是 Private Sub Form_click() Dim sum As Integer,m As Integer sum=0 Do m=InputBox(\输入m\ sum=sum+m Loop Until m=0 MsgBox sum End Sub A.0B.17C.20D.21 79.表达式\的功能是 A.将变量A保留小数点后1位 B.将变量A四舍五入取整 C.将变量A保留小数点后5位 D.舍去变量A的小数部分 80.VBA义是 A.定义10个整型数构成的数组NewArray B.定义11个整型数构成的数组NewArray C.定义1个值为整型数的变量NewArray(10) D.定义1个值为10的变量NewArray 81.运行下列程序段,结果是 For m = 10 To 1 Step 0 k = k + 3 Next m A.形成死循环 B.循环体不执行即结束循环 C.出现语法错误 D.循环体执行一次后结束循环 82.运行下列程序,结果是 Private Command32_Click() f0 = 1: f1 = 1: k = 1 Do While k <= 5 f = f0 + f1 f0 = f1 f1 = f k = k + 1 Loop MsgBox \End Sub A.f = 5 B.f = 7 C.f = 8 D.f = 13 83.有如下事件程序,运行该程序后输出结果是 Private Command33_Click() Dim x As Integer, y As Integer Sub Sub 语 句 \ NewArray(10) as Integer\的含 第 20 页 共 21 页 x = 1: y = 0 Do Until y <= 25 y = y + x * x x = x + 1 Loop MsgBox \& y End Sub A.x=1, y=0 B.x=4, y=25 C.x=5, y=30 D.输出其他结果 84.下列程序的功能是计算sum=1+(1+3)+(1+3+5)+……+(1+3+5+……+39) Private Command34_Click() t = 0 m = 1 sum = 0 Do t = t + m sum = sum + t m = ______ Loop While m <= 39 MsgBox \End Sub 为保证程序正确完成上述功能,空白处应填入的语句是 A.m + 1 B.m + 2 C.t + 1 D.t + 2 85.下列程序的功能是返回当前窗体的记录集 Sub GetRecNum() Dim rs As Object Set rs = ______ MsgBox rs.RecordCount End Sub 为保证程序输出记录集(窗体记录源)的记录数,空白处应填入的语句是 A.Recordset B.Me.Recordset C.RecordSource D.Me.RecordSource Sub 参考答案: 1.D2.C3.C4.A5.B6.D7.C8.C9.B10.B11.A12.A13.A14.B15.B16.C17.A18.A19.D20.D21.C22.D23.B24.D25.B26.A27.A28.C29.C30.C31.B32.D33.C34.B35.D36.A37.C38.A39.D40.C41.D42.C43.A44.B45.C46.A47.A48.D49.B50.B51.B52.C53.C54.C55.A56.D57.B58.B59.D60.D61.A62.D63.B64.D65.B66.A67.A68.D69.B70.C71.C72.D73.C74.D75.B76.D77.C78.C79.B80.B81.B82.D83.A84.B85.B 第 21 页 共 21 页