admin 管理员组文章数量: 1086019
2024年3月27日发(作者:cise词根词缀)
1、选择题:
1.VBA中定义符号常量可以用关键字
A)Const B)Dim C)Public D)Static
2.Sub过程和Function过程最根本的区别是
A)Sub过程的过程名不能返回值,而Function过程能通过过程名返回值
B)Sub过程可以使用Call语句或直接使用过程名,而Function过程不能
C)两种过程参数的传递方式不同
D)Function过程可以有参数,Sub过程不能有参数
3.定义了二维数组A(2 to 5,5),则该数组的元素个数为
A)25 B)36 C)20 D)24
4.已知程序段:
s=0
For i=1 To 10 step 2
s=s+1
i=i*2
Next i
当循环结束后,变量i的值为a,变量s的值为b。
a. A)10 B)11 C)22 D)16
b. A)3 B)4 C)5 D)6
5.以下内容中不属VBA提供的数据验证函数是
A)IsText B)IsDate C)IsNumeric D)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)ByVal B)ByRef C)Optional D)ParamArray
8.在VBA代码调试过程中,能够显示出所有在当前过程中变量声明及变量值信
息的是
A)快速监视窗口 B)监视窗口 C)立即窗口 D)本地窗口
9.VBA的逻辑值进行算术运算时,True值被当作
A)0 B)-1 C)1 D)任意值
10.VBA中不能进行错误处理的语句结构是
A)On Error Then标号 B)On Error Goto 标号
C)On Error Resume Next D)On Error Go 100
11.VBA中用实际参数a和b调用有参过程Area(m,n)的正确形式是
A)Aream,n B)Area a,b C)Call Area(m,n) D)Call Area a,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
For i=1 TO 3
Forj=-4 To -1
n=n+1
Nextj
Next i
A)0 B)3 C)4 D)12
15.假设有如下Sub过程:
Sub sfun(x As Single,Y As Single)
t=x
x=t/y
y=t mod y ‘mod求余计算 例7 mod 4 =3
End Sub
在窗体中添加一个命令按钮(名为Comnndl),编写如下事件过程
Private Sub Commandl_Click()
Dim a As SinSle
Dim b As SinSle
a=5:b=4
sfun(a,b) ‘原书有错,改为:sfun a,b或call sfun(a,b)
MsgBox a & chr(10) + chr(13) & b ‘
chr(数值)的功能返回数值对应的字
母
End Sub ‘chr(10)=’返回1个换行符
‘chr(13)=’返回一个空格符
号
注意:a → x ; b → y 是按地址传递的,因此不能写成sfun 5,4
chr与Asc互逆 例asc(a)=97 ; chr(97)=a asc(chr(97))=97
打开窗体运行后,单击命令按钮,消息框中有两行输出,内容分别为
A)1和1 B)1.25和l C)1.25和4 D)5和4
16.有如下VBA程序段:
sum=0
n=0
For i=1 TO 5
x=n/i
n=n+1
slim=sum
Next i
以上For循环计算sum,完成的表达式是
A)1+1/1+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
17.在窗体中有一个命令按钮runl6,对应的事件代码如下:
Private Sub runl6_Enter()
Dim num As Integer
Dim a As Integer
Dim b As Integer .
Dim i As Integer
For i=1 To 10
num=InputBox("请输入数据:","输入",1)
if Int(num/2)=num/2 Then ‘Int取整函数 例int(3.5)=3
a=a+1
Else
b=b+1
End lf
Next I
MsgBox("运行结果:a="& Str(a) & ",b=" & Str(b))
End Sub ‘str(123)=”123”将123转换成字符串
与val互逆。例:Val(str(123))=123
运行以上事件所完成的功能是
A)对输入的10个数据求累加和
B)对输入的10个数据求各自的余数,然后再进行累加
c)对输入的10个数据求分别统计有几个是整数,有几个是非整数
D)对输人的10个数据求分别统计有几个是奇数,有几个是偶数
18.以下内容中不属VBA提供的数据验证函数是
A)IsNull B)IsDate C)lsNumeric D)IsText
19.VBA"定时”操作中,需要设置窗体的“计时器间隔(TimerInterval)”属性
值。其计量单位是
A)微秒 B)毫秒 C)秒 D)分钟
20.InputBox函数返回值的类型为
A)数值 B)字符串(错误) 注意:正确答案为D)
C)变体 D)数值或字符串(视输入的数据而定)InputBox$ 返回字符串
InputBox 返回数值或字符
串
21.在MsgBox(
prompt,buttons,title,hetpfite,context
)函数调用形式中
必须提供的参数是
A)prompt B)buttons C)title D)context
22.假定有以下循环结构(2005年9月)
Do Until条件
循环体
Loop
则正确的叙述是。
A)如果“条件”值为0,则一次循环体也不执行
B)如果“条件”值为0,则至少执行一次循环体
C)如果“条件”值不为0,则至少执行一次循环体
D)不论“条件”是否为“真”,至少要执行一次循环体
解析:Do…Until。..Loop循环结构中,当条件值为假时,重复执行循环体,
直至条件值为真,结束循环。因此,如果条件值为0,则至少执行一次循环体。
23.窗体上添加有3个命令按钮,分别命名为Commandl、Command2和Command3。
编写Commandl的单击事件过程,完成的功能为:当单击按钮Commandl时,按钮
Command2可用,按钮Command3不可见。以下正确的是。(2005年9月)
A)Private Sub Commandl_Click()
e=True
e=False
End Sub
B)PrivateSub Commandl_Click()
d=true
d=False
End Sub
C)Private Sub Commandl_Click()
d=True
e=False
End Sub
D)Private SubCommandl_Click()
e=True
d=False
End Sub
解析:Enabled属性用于判断控件是否可用,而Visible属性用于判断控件
是否可见。题目中要求Command2可用,而Command3不可见,则必须设置Command2
的Enabled为True,并且设置Command3的Visible为False
24.假定有以下程序段:(2005年9月)
n=0
for i=1 to 3
forj=-4 to -1
n=n+1
next j
next i
运行完毕后,n的值是
A) 0 B) 3 C) 4 D) 12
解析:本题中,外层循环从1到3,要执行3次,而内层循环从-4到-1,执
行4次,所以一共执行了4*3=12次循环。而每执行一次循环n就加1,所以最
后n的值为12。
25.下列逻辑表达式中,能正确表示条件“x和Y都是奇数”的是。(2005年9
月)
A) x Mod 2=1 Or y Mod 2=1 B) x Mod 2=0 Or y Mod 2=0
C)x Mod 2=1 And y Mod 2=1 D)x Mod 2=0 And y Mod 2=0
解析:要使x和y都是奇数,则x和y除以2的余数都必须是1。
26.VBA程序的多条语句可以写在一行中,其分隔符必须使用符号。(2006年4
月)
A): B)’ C); D),
解析:VBA程序在一行上写多个语句时用冒号“:”作分隔符.
27.VBA表达式3*3\3/3的输出结果是。(2006年4月)
A) 0 B) 1 C) 3 D) 9
解析:VBA的表达式运算符优先级顺序“*”和“/”高于“”。此表达式先
计算3*3=9和3/3=1,最后计算9\1=9。
28.如果加载一个窗体,先被触发的事件是。(2006年4月)
A)Load事件 B)Open事件 C)Click事件 D)Dalick事件
29.以下程序段运行结束后,变量x的值为_____。(2006年4月)
x=2
y=4
DO
x=x*y
y=y+1
Loop While y<4
A) 2 B) 4 C) 8 D) 20
解析:定义两个变量x=2、y=4,执行Do后的循环体语句:x=x*y=2*4=8;
y=y+1=4+l=5;此时y:5,while语句为假退出循环。由于执行了一次循环,所
以x=8。
30.在窗体上添加一个命令按钮(名为Commandl),然后编写如下事件过程:(2006
年4月)
Private Sub Commandl_Click( )
For i=1 To 4
x=4
Forj=1 To 3
x=3
For k=1 T0 2
x=x+6
Next k
Nextj
Next i
MsgBox x
End Sub
打开窗体后,单击命令按钮,消息框的输出结果是。
A)7 B)15 C)157 D)538
解析:此题中应用三重嵌套循环,循环嵌套的执行,当外层循环执行一次,
内层就要执行所有的循环:
第一个for语句对变量x赋值,x=4;
第二个for语句对变量x赋值,x=3;
第三个for语句对变最x赋值,x=x+6。当i=1时,j=1,k执行其内部的两
次循环,此时x赋值为3,当k=1时,x=x+6=3+6=9:k=2时,x=x+6=96=15。退
出内循环到第二个for语句执行其剩余的循环,i=1、j=2时,k依旧执行其内部
的两次循环,此后x还是等于15。i=1、j=3时,因为第三个for语句始终对x
的赋值为15,所以运算结果x始终等于15。第二层循环完成后退回到第一层,
执行其剩余的循环,步骤同上,因此x=15。
31.假定有如下的Sub过程:(2006年4月)
Sub sfun(x As Single,y As Single)
t=x
x=t/y
y=t Mod y
End Sub
在窗体上添加一个命令按钮(名为Commandl),然后编写如下事件过程:
Private Sub Commandl_Click()
Dim a as single
Dim b as single
a=5
b=4
sfun a,b
MsgBox a & chr(10)+chr(13) & b
End Sub
打开窗体运行后,单击命令按钮,消息框的两行输出内容分别为 。
A)1和1 B)1.25和1 C)1.25和4 D)5和4
解析:此题中设置了一个sfun()函数,进行除法运算和求模运算,为命令
按钮(名为Commandl)编写事件,定义两变量a=5、b=4;调用此函数传递a、b的
值给x、Y进行运算,t=x=5、y=4;x:t/y;x=5/4=1.25(除法运算);Y=t Mod y=5
mod 4=1(求模运算)。
32.Sub过程与Function过程最根本的区别是。(2006年9月)
A)Sub过程的过程名不能返回值,而Function过程能通过过程名返回值
B)Sub过程可以使用Call语句或直接使用过程名调用,而Function过程不可
以
C)两种过程参数的传递方式不同
D)Function过程可以有参数,Sub过程不可以
解析:过程是模块的单元组成,分为两种类型:Sub过程和Function函数
过程。VBA提供的关键字CALL,可显示调用一个子过程(Sub过程),但却不能调
用执行函数过程(Function过程),此外Sub过程和Function过程都可以直接引
用过程名来调用,因此选项B错误。Sub过程可以使用参数(由调用过程传递的
常数、变量或表达式),所以选项D错误。选项C要视具体情况才能确定。Sub
过程执行操作但不返回值,Function过程可以返回值,这也是过程最根本的区
别,所以选项A是正确的。
33.在窗体中添加一个命令按钮(名称为Commandl),然后编写如下代码:(2006
年9月)
PrivateSubCommandl_Click()
A=0:b=5:c=6
MsgBox a=b+c
End Sub
打开窗体运行后,如果单击命令按钮,则消息框的输出结果是 。
A) 11 B) a=11 C) 0 D) False
解析:程序中“MsgBox a=b+c”表示在消息框中显示a与b+c的值比较的结
果,由“a=0:b=5:c=6”可知,0!=11,所以消息框的输出结果为False。
34.在窗体中添加一个命令按钮(名称为Command1),然后编写如下代码:(2006
年9月)
Private Sub Commandl_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
解析:根据程序,a(2,5)+a(3,4)+a(4,5)=2*5+3*4+4*5=42
35.在窗体中添加一个命令按钮(名为Commandl)和一个文本框(名为Textl),并
在命令按钮中编写如下事例代码:(2006年9月)
Private Sub Commandl_Click()
m=2.17 ‘Len(“abc”)=3
n=Len(Str$(m)+Space(5)) ‘Str$(2.17)=”□2.17”
=n ‘Space(5)=”□□□□□”
End Sub
打开窗体运行后,单击命令按钮,在文本框中显示。
A) 5 B) 8 C) 9 D) 10
解析:程序中“n=Len(Str$(m)+Space(5))”的含义是算出字符串总长度,
当把正数转换成字符串时,Str$函数在字符串前面留有一个空格,Space(数值表
达式)返回由数值表达式确定的空格个数组成的空字符串。Str$(m)表5个字符
串,Space(5)表示5个字符串,所以n等于10。
36.在窗体中添加一个命令按钮(名称为Commandl),然后编写如下代码:(2006
年9月)
Private Sub Commandl_Click( )
A=75
If A>60 Then I=1
If A>70 Then I=2
If A>80 Then I=3
1f A>90 Then I=4
MsgBox I
End Sub
打开窗体运行后,单击命令按钮,则消息框的输出结果是。
A)1 B)2 C)3 D)4
解析:if条件表达式1 Then条件表达式1为真时要执的语句序列。在程
序中,A=75,即A)70,执行 IfA)70 Then I=2,所以I=2。
37.在窗体中添加一个命令按钮(名称为Commandl),然后编写如下代码:(2006
年9月)
Private Sub Commandl_Click( )
s="ABBACDDCBA"
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
解析:Mid(字符表达式,数值表达式1,数值表达式2):返回一个值,该值
是从字符表达式最左端某个字符开始,截取到某个字符为止的若干个字符。其中,
数值表达式1的值是开始的字符位置,数值表达式2是终止的字符个数。
Left(字符表达式,数值表达式):返回一个值,该值是从字符表达式左侧第
1个字符开始截取的若干字符。其中,字符字数是数值达式的值。
Right(字符表达式,数值表达式):返回一个值,该值是从字符表达式右侧
第1个字符开始截取的若干字符。其中,字符字数是数值表达式的值。
For循环运行三次,最后一次循环结束,x="BB",y="AB",z="BBABBA"。
38.在窗体中添加一个命令按钮(名称为Commandl),然后编写如下代码:(2006
年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值。)
。
39.有如下语句:(2007年4月)
s=Int(100*Rnd)
执行完毕后,s的值是——。
A)[0,99]的随机整数 B)[0,100]的随机整数
C)11,99]的随机整数 D)[1,100]的随机整数
解析:随机数函数Rnd(<数值表达式>)用于产生一个小于1但大于。的值,
该数值为单精度类型。Int(数值表达式)是对表达式进行取整操作,它并不做“四
舍五人”运算,只是取出“数值表达式’’的整数部分。
40.InputBox函数的返回值类型是。(2007年4月)
A)数值 B)字符串
C)变体 D)数值或字符串(视输入的数据而定)
解析:InputBox的返回值是一个数值或字符串。当省略尾部的“$”时,
InputBox函数返回一个数值,此时不能输入字符串。如果不省略“$”,则既可
输入数值也可输人字符串,但其返回值是一个字符串。因此,如果需要输入数值,
并且返回的也是数值,则应省略“$”;而如果需要输入字符串,并且返回的也是
字符串,则不能省略“$”。如果不省略“$”,且输人的是数值,则返回字符串。
当需要该数值参加运算时,必须用Val函数将其转换为数值。
41.在窗体中添加一个名称为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。
42.设有如下窗体单击事件过程:(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
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。
43.设有如下程序:(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”
的。
44.下列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分割开两个数
值或表达式之间的范围;关键字Is接关系运算符;关键字CaseElse后的表达式,
是在前面的Case条件[不满足时执行的。本题选项C中用的是逻辑运算符And连
接两个表达式,所以不对,应该以逗号隔开。
45.使用Function语句定义一个函数过程,其返回值的类型——。(2007年9
月)
A)只能是符号常量 B)是除数组之外的简单数据类型
C)可在调用时由运算过程决定 D)由函数定义时As子句声明
解析:函数的参数和返回值都有特定的值与之相对应,函数的返回值由函数
定义时As子句声明。
46.在过程定义中有语句:(2007年9月)
Private Sub GetData(ByRef f As Integer)
其中ByRef的含义是。
A)传值调用 B)传址调用 C)形式参数 D)实际参数
解析:ByRey在过程定义中为可选项,表示该参数按地址传递。ByRey是VBA
的默认选项。ByVal表示参数按值传递。
47.下列不是分支结构语句的是 。(2007年9月)
A)If…Then…EndIf B)While…Wend
C)If…Then…Else…Endlf D)Select…Case…EndSelect
解析:While…Wend为循环语句,其语句结构中没有分支语句。
48.
在“窗体视图”中显示窗体时,窗体中没有记录选定器,应将窗体的“记录选定器”
属性值设置为
A)是 B)否 C)有 D)无
49.
为窗体或报表上的控件设置属性值的正确宏操作命令是
A)Set B)SetData C)SetWarnings D)SetValue
50.
因修改文本框中的数据而触发的事件是
A) Change B)Edit C)Getfocus D)LostFocus
51.
如果加载一个窗体,先被触发的事件是
A.Load 事件 B.Open事件
C.Click 事件 D.DbClick事件
52.以下关于VBA运算符优先级比较,正确的是
A)算术运算符 > 逻辑运算符 > 比较运算符 B)逻辑运算符 > 比较运算符 > 算
术运算符
C)算术运算符 > 比较运算符 > 逻辑运算符 D)以上均是错误的
53.定义了二维数组A(2 to 5,5),该数组的元素个数为
A)20 B)24 C)25 D)36
54.在VBA中,如果没有显式声明或用符号来定义变量的数据类型,变量的默
认数据类型为
A)Boolean B) Int C) String D)Variant
55.使用VBA的逻辑值进行算术运算时,True值被处理为
A)-1 B)0 C)1 D)任意值
56.以下可以得到"2*5=10"结果的VBA表达式为
A)"2*5" & "=" & 2*5 B)"2*5" + "=" + 2*5 C)2*5 & "=" & 2*5 D)2*5 + "=" + 2*5
57.确定一个控件在窗体或报表上的位置的属性是
A)Width或Height B)Width和Height C)Top或Left D)Top和Left
58.以下程序段运行后,消息框的输出结果是
a=sqr(3)
b=sqr(2)
c=a>b
Msgbox c+2
A)-1 B)1 C)2 D)出错
59.下列逻辑表达式中,能正确表示条件"x和y都是奇数"的是
A)x Mod 2 = 1 Or y Mod 2 = 1 B)x Mod 2 =
C)x Mod 2 = 1 And y Mod 2 = 1 D)x Mod 2 = 0 And y Mod 2 = 0
60.假定有以下循环结构
Do Until 条件
循环体
Loop
则正确
A)如果"条件"值为
C)如果"条件"值不为0,则至少执行一次循环体 D)不论"条件"是否为"真",至
少要执行一次循
2、填空题
1.VBA的全称是 Visual Basic for Application。
2.模块包含了一个声明区域和一个或多个子过程(以Sub开头)或函数过程(以
Function开头)。
3. 说明变量最常用的方法,是使用Dim … As …结构.
4.VBA中变量作用域分为3个层次,这3个层次是局部变量、模块变量和全局
变量。
5.在模块的说明区域中,用private关键字说明的变量是模块范围的变量;而
用public或Global键字说明的变量是属于全局范围的变量。
6.要在程序或函数的实例间保留局部变量的值,可以用Static关键字代替Dim。
7.用户定义的数据类型可以用Type…Type End关键字间说明。
8.VBA的3种流程控制结构是顺序结构、选择结构和循环结构。
9.VBA中使用的3种选择函数是IIf、Switch和Choose。
10.VBA提供了多个用于数据验证的函数。其中IsDate函数用于合法日期验证;
IsNumeric函数用于判定输入数据是否为数值。
11.VBA的有参过程定义,形参用ByVal说明,表明该形参为传值调用;形参用
ByRef说明,表明该形参为传址调用.
12.VBA的错误处理主要使用On Error语句结构。
13.On Error Goto 0语句的含义是取消错误处理。
14.On Error Resume Next语句的含义是忽略错误并执行下一条语句。
15.VBA语言中,函数lnputBox的功能是输入数据对话框; Msgbos函数的功能
是显示消息信息。
16.在VBA中双精度的类型标识是Double。
17.在VBA中,分支结构根据条件(或条件表达式)选择执行不同的程序语句。
18.VBA的逻辑值在表达式当中进行算术运算时,True值被当作-1、False值被
当作0来处理。
19.VBA编程中,要得到[15,75]上的随机整数可以用表达式Int(15+61*Rnd).
20.VBA提供了多个用于数据验证的函数。其中IsDate函数用于合法日期验证;
IsNumeric函数用于判定输入数据是否为数值。
21. VBA语言中,函数InputBox的功能是输入数据对话框;Msgbox函数的功能
是显示消息信息。
22.VBA的“定时”操作功能是通过窗体的定时(Timer)事件过程完成。
23.窗体的计时器触发事件激发的时间间隔是通过计时器间隔(或interval)属
性来设置。
24.宏是 Excel VBA 的基础。
25.宏是被存储在Visual Basic模块中的一系列 命令 和 函数 。
26.简单地说,宏就是 一组动作的集合 。
27.制作宏的两种方法: 录制宏 和 编写宏 。
28.录制宏是指: 通过录制的方法将Excel 的操作过程以代码的方式记录并保
存下来。
29.编写宏是指: 在VBE 开发环境中直接输入操作过程的程序代码。
30.宏有 3 种基础操作,分别是:录制宏、编写宏、删除宏。
31.VBA是 Visual Basic For Application 的缩写。
32.VBA是VB来 开发应用程序 一种语言。
33.VBA是Office对象和VBA程序代码之间相互关联和交流的桥梁。
34.VBA工程窗口包括: 工作薄 、工作表 、窗体 、模块 、类模块 等对象。
35.Microsoft Excel 对象是Excel VBA 中最基本的对象。
36.窗体 是Excel VBA 中最重要的对象。通过 窗体 可以使用户更好的与应用
程序进行对话。
37.模块由变量的声明 和过程 构成,是一些代码的集合。过程 是一段可以单
独运行的代码语句,一个模块由多个过程 组成。
38.代码窗口的作用是:用来编辑和存储Excel VBA程序的代码。
39.代码窗口主要由:对象列表框、边界标识条、过程试图按钮、全模块视图按
钮、过程列表框和程序分割线6部分组成。
40.对象列表框的作用:存放应用程序中的所有对象。
41.边界标识条得作用:显示或设置程序运行时的断点。
42.过程列表框的作用:显示对应于对象列表框中对象而发生的过程。
43.VBA 常用的对象:Application对象 、 Workbook 对象 、Worksheet对象 、
Range 对象、 Chart对象 。
44.VBA 常用对象的集合:Workbooks集合、Worksheets集合、Sheets集合。
45.常量声明使用Const语句,声明常量时,需要对其进行赋值,并且赋值后该
值不能再被修改。
46.变量的声明语法结构:Dim 变量名 as 数据类型。
47.Mod用于对两个操作数作除法并且只返回余数。
48.连接运算符分为 强制字符连接 运算符和 混合连接 运算符两种。
49.强制连接运算符指的是“&”运算符,其主要用来将两个表达式强制作为字
符串连接。
50.混合连接运算符指的是“+”运算符。
51.逻辑运算符包括逻辑与(AND)运算符和逻辑或(OR)运算符两种。
52.通常用到的判断语句指的就是If 语句。
53.在VBA中主要有三种循环语句,分别是:
Each···Next。
Do···Loop、For···Next、For
3、程序填空:
1.设有如下代码:
X=1
Do
x=x+2
Loop Until x=7 (或x>=7 或 x>6)
运行程序,要求循环体执行3次后结束循环,请在空白处填入适当的语句
2.在窗体中有一个名为Command25的命令按钮,Click事件代码如下。该事件
的完整功能是:接受从键盘输入的10个大于0的整数,找出其中的最大值和对
应的输入位置。请依据上述功能要求将程序补充完整。
Private Sub Command25_Click()
Max=0
max_n=0
For i=l To 10
num=Val(InputBox("请输入第"& i &"个大于0的整数:"))
If num>max Then
max=num
max_n=i
End If
Next i
MsgBox("最大值为第" & max_n & "个输入的" & max)
End Sub
3.以下是一个竞赛评分程序。8位评委,去掉一个最高分和一个最低分,计算
平均分,试填空补充完整。
Private Sub Form_Click( )
Dim Max As Integer,Min As Integer
Dim i As Integer,x As Integer,s As Integer
Dim p As Single
Max=0
Min=0
s=0
For i=1 to 8
x=Val(InputBox("请输入分数:"))
If x>Max Then Max=x
If x s=s+x Next i s=s-Min-Max p=s/6 MsgBoxr"最后得分:" & p End Sub 4.以下程序的功能是:从键盘上输入若干个数字,当输入负数时结束输入,统 计出若干数字的平均值,输出结果,试填空补充完整。 Pribate Sub Form_click( ) Dim x,y As Single Dim z As Integer x=InputBox("Enter a score") Do while x>=0 y=y+x z=z+1 x=InputBox("Enter a score") Loop If z=0 Then z=1 End If y=y/z MsgBox y End Sub 5、【程序说明】 下列程序显示所有3个数码各不相同的3位数,要求按紧凑格式每行显示15个 数,并统计有多少个这样的三位数。 Private Sub Form_Click() Dim n As Integer, a As Integer, b As Integer, c As Integer Dim x As Integer For a =0 to 9 '个位数数码 For b = 0 To 9 '十位数数码 For c = ----1---- If a<>b And b<>c And a<>c Then x =a+10*(b+10*c) n = ----2---- ----3---- If n mod 15 = 0 Then Print End If Next c,b,a Print "总共有这样的三位数"; n; "个" End Sub 1、1 to 9 2、n+1或1+n n+1或1+n:1 to 9:1 to 9 3、print x; 6【程序说明】 窗体是简易文本编辑器程序。通过文本框和剪贴板实现全选、复制、粘贴和删除 操作。 Private Sub Command1_Click() '全选按钮 rt = 0 gth = ----1---- us d = True d = True d = True End Sub Private Sub Command2_Click() '复制按钮 t t d = True us End Sub Private Sub Command3_Click() '粘贴按钮 t = ----2---- us End Sub Private Sub Command4_Click() '删除按钮 ----3---- d = False d = False d = False End Sub Private Sub Form_Load() d = False d = False d = False End Sub Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If gth <> 0 Then d = True d = True Else d = False d = False End If End Sub 1、Len()或Len(Text1) 2、t 3、t = "" 7 该程序执行后,输出一个右上三角元素(含对角线)为1,其余元素为 ×5的矩阵。 Private Sub Form_Click() Dim a(1 To 5, 1 To 5) As Integer Dim I As Integer, j As Integer For I = 1 To 5 For j = 1 To 5 If ----1---- Then ----2---- End If Next j Next I For I = 1 To 5 For j = 1 To 5 " "; a(I, j); Next j ----3---- Next I End Sub 1、I<=j或j>=I 2、a(I,j)=1 0 的5 3、print 8以下过程是将一个英文句子的每个单词的首字母都变成大写。从键盘上任意输 入一条英文句子,将句子中的每个单词的首字母都变成大写例如:输入"I am a good student"。则要求输出"I Am A Good Student"。 Public Sub Uppersen() Dim oldsen As String, newsen As String Dim char As String, lastchar As String Dim k As Integer, i As Integer oldsen = InputBox("请输入英文句子:") k = ----1---- '以空格作为单词的界定,空格后的字母转换为大写字母 lastchar = ----2---- For i = 1 To k char = ----3---- If lastchar = " " Then char = UCase(char) End If newsen = newsen & char lastchar = char Next i "input:"; oldsen "output:"; newsen End Sub 1、Len(oldsen) 2、" " 3、Mid(oldsen, I, 1) 9【程序说明】 本程序利用1个定时器、1个文本框和2个命令按钮制作一个动态表。各控 件名称取缺省值,控件Command1、Command2标题分别为“开始”、“结束”。运行 时,单击“开始”按钮后表开始每分钟计一次时,并在文本框上显示总分钟数; 单击“结束”按钮后,计时结束,在窗体上显示出运行的时间(折算成小时、分 钟,不计算秒数)。 Dim x as long Private Sub Form_Load() al = 60000: d = False End Sub Private Sub Command1_Click() Cls x = 0 ----1---- End Sub Private Sub Command2_Click() Dim h As Integer, m As Integer, s As Integer d = False h = ----2---- m = x mod 60 Print "运行了" + Str(h) + "小时" + Str(m) + "分" End Sub Private Sub Timer1_Timer() ----3---- = x End Sub 1、d=true 2、x60 3、x=x+1 10【程序说明】 以下程序执行后将输出100到200之间所有的素数,并统计素数的 个数 Private Sub Form_Click() Dim i%, j%, k%, t% 't为统计素数的个数 Dim b As Boolean For i = 100 To 200 b = True k= ------ 1 ----- j = Int(Sqr(i)) Do While k <= j And b If i Mod k = 0 Then ------ 2 ------ End If ------ 3 ------ Loop if b=true then t = t + 1 i End If Next i Print "t="; t End Sub 1、2 2、b = False 3、k = k + 1 11【程序说明】 下列程序的功能是找出被5、7除,余数为1的最小5个正整数。 Private Sub Form_Click() Dim Ncount%, n% Ncount =----1---- n = 1 Do n = n + 1 If ----2---- Then Print n Ncount = Ncount + 1 End If Loop Until ----3----=5 End Sub 1、0 2、n Mod 5 = 1 And n Mod 7 = 1 3、Ncount 12 该程序的功能为:从1到1000中找出这样的数,该数每位上数字的阶乘之和 等于该数,并将结果输出从窗体输出。 Private Sub Form_Click() Dim k, a, n, I, m Dim p As Integer For k = 1 To 10000 a = Ltrim(Str(k)) n = 0 m = Len(a) For I = 1 To ----1---- p = Val(Mid(a, I, 1)) n = ----2---- Next I If n = k Then k Next k End Sub Function fact(x As Integer) As Long '该函数用于计算阶乘 Dim y As Long Dim I% y = 1 For I = 1 To x y = y * I Next I ----3---- End Function 1、m 2、n+fact(p)或fact(p)+n 3、fact=y 13【程序说明】该程序是对以下数列进行运算: 有一个数列,它的前三个数是0,1,2,从第四个数起,每个数都是它前 面的两个数之和,求出该数列的第17个数是多少,并求出该数列的第几个数起 每个数都超过1E+8 Private Sub Form_Click() Dim last_one As Long Dim last_two As Long Dim this_one As Long Dim i As Integer last_one = 1 '数列的第二个数 last_two = 2 '数列的第三个数 i = 4 '从数列的第四个数求起 Do this_one = last_one + last_two last_one = last_two last_two = ------1------- If i = 17 Then "No:17="; this_one End If ------2------ Loop While this_one <= 100000000# "No:";------3------; "is > 1E+8" End Sub 1、this_one 2、I = I + 1或I=1+I 3、I 14【程序说明】 以下程序运行时,计算下列级数的和,直到累加的末项之绝对值小于 10的-7次方为止。 Private Sub Command1_Click() Dim s As Double, x As Double, t As Double, I As Integer x = InputBox("x=") s = 1 I = 1 t =----1---- Do While ----2----<1e-7 t = -t * x / I: I = I + 1 s=----3---- Loop Print s End Sub 1、1 2、Abs(t) 3、s + t或t+s 4、简答题 1、宏的概念? 宏是被存储在Visual Basic 模块中的一系列命令和函数。在需要执行宏时,宏可以立刻被执行,简单的说,宏就 是一组动作的集合。 2、宏的运行原理 实际上,宏是保存在Visual Basic 模块当中的一组程序代码,通过这些程序代码驱动着操作的自动执行。当单击 按钮时,这些由代码组成的宏就会执行 与其相关的一些操作。 3. 怎样添加“开发工具”选项卡? 打开Excel 工作簿,单击左上角的Office 按钮,选择【Excel 选项】, 在【Excel 选项】中选择常用选项卡,然后在选项卡中选择“在功能区显示‘开发工具‘选项卡”选项 右下角【确定】按钮,即可。 4. 进入VBE开发环境有哪几种方法? (1)按下快捷键Alt+F!1进入VBE开发环境 (2)单机开发工具选项卡下的【Visual Basic】命令进入VBE当中 (3)单机开发工具选项卡下的【宏】按钮,在弹出“宏”对话窗时,单击【编辑】按钮进入VBE当中 5. VBA的工作原理。 VBA是Office对象和VBA程序之间相互关联和交流的桥梁。VBA代码是由VB语言来编写的,其变量定义及语 法结果与VB语言完全相同,当使用VBA代码来调用Office对象时,需要有VBA程序接口,而这种调用是通过对象 模型自动化实现的。 当使用VBA代码调用Excel的某个属性时,如果在VBE环境中解释执行VBA代码时,发现有对Excel这个属性的调用, 则自动通过对象模型调用该属性,然后通过方操作该属性。这样就实现了VBA代码和Office对象之间的通信连接。 6. 简述VBA 和VB之间的区别。 VBA 和VB之间是紧密相关的,VBA 是VB的一个分支,也可以将VBA理解为“寄生在Office产品中的Visual Basic ” 区别在于: (1) 设计目的不一样,VB用于设计创建标准的应用程序,而VBA则是使已有的应用程序自动化。 (2) 开发环境不同,VB具有自己的开发环境,而VBA必须寄生于已有的应用当中。 (3) 编译执行文件不同,VB执行文件的扩展名为.exe,VB由于内含编译器,因此可制作可执行文件,VBA则由于 内含于Office系列各软件内,且不提供编译器,故VBA程序只可依附于各软件而执行,无法制作可执行文件。 (4) 运行方式不同。要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件,而 VBA开发的程序必须依赖于它的“父”应用程序。 (5) 可用的资源不同。对于程序内引用的资源,包括对象、函数等。VB在此方面的资源要比VBA多很多。从专业 角度讲,VB是比较专业的程序设计语言,而VBA的目的则是强化Office应用系统,故在可用资源方面,VBA不及 VB。 7. VBA代码窗口由哪几部分组成?分别写出其作用。 代码窗口主要由:对象列表框、边界标识条、过程试图按钮、全模块视图按钮、过程列表框和程序分割线6部 分组成。 对象列表框的作用:存放应用程序中的所有对象。 边界标识条得作用:显示或设置程序运行时的断点。 过程试图按钮作用:将全模块视图转换为单个过程的视图。 全模块视图按钮作用:代码窗口中将显示所有的过程代码。 过程列表框的作用:显示对应于对象列表框中对象而发生的过程。 程序分割线的作用:用来区分不同的过程。 8. 简述代码窗口的特征? (1) 自动调节输入属性和方法的大小写; (2) 自动显示成员列表; (3) 自动显示参数信息; (4) 添加代码注释。 9. 列举常用的对象及常用对象的集合 常用的对象:Application对像、Workbook对象、Worksheet对象、Range对象、Chart对象。 常用对象的集合:Workbook集合、Worksheet集合、sheets集合。 10. 分别写出常量和变量的语法格式。并写出主要事项。 常量:const 常量名 as数据类型=值 注意:声明常量时,需要对其进行赋值,并且赋值后该值不能再被修改。 变量:Dim 变量名 as 数据类型。程序中,可以声明变量,也可以不声明变量。 11. 指出 / 、 、Mod、^ 分别指什么,并说出优先级。 / 用来进行两个数的除法运算,并返回一个浮点数。 用于对两个操作数作除法并返回一个整数。 Mod 用于对两个操作数作除法并且只返回余数。 ^ 用来求一个数字的某次方。 优先级:^ > / > > Mod 12. 简述常用控制语句都有哪些?并举例 判断语句(If Condition Then [statements]、If Condition Then [statements] Else [statements] 、If Condition Then [statements] Else [statements] End If 、If Condition Then [statements] Else If Condition Then [statements]…Else [statements] End If 、) 循环语句(Do…Loop、For…Next、For Each…Next) 错误转移语句(On Error GoTo、On Error Resume Next) With语句 Select Case语句 13、什么是事件?事件过程的一般格式是怎样的? 14、Name属性和Caption属性有什么区别? 15、VB定义了哪几种数据类型?各类型的特点? 16、If 条件语句都有哪几种格式?该如何使用? 17、循环语句都有哪几种格式?该如何使用? 18、简述一维二维数组的使用方式并举例? 19、简述字符串运算符“+”、“&”的区别? 20、简述函数的作用,并举例? 5、程序设计题 1、求1+2+3+…+100的值 2、输入1个分数,判断输出其等级: 90分以上“优秀” 80-90分“良好” 70-80分“中等” 60-70分“及格” 60分以下“不及格” Dim f As Integer, t As String f = InputBox("请输入您的分数") Select Case f Case Is >= 90 t = "优秀" Case Is >= 80 t = "良好" Case Is >= 70 t = "中等" Case Is >= 60 t = "及格" Case Else t = "不及格" End Select MsgBox t 3、输入一个数组包含5个整数,按从小到大的顺序排序并输出。 5 7 4 1 3 1:i=1,t=i=1,j=2 to 5 a(t)>a(j):t=j A(1)>a(3) t=3 A(3)>a(4) t=4 A(4)>a(5) 1 7 4 5 3 I=2,t=i=2,j=3 to 5 Dim a(1 To 5) As Integer Dim i As Integer, j As Integer Dim t As Integer, b As Integer For i = 1 To 5 a(i) = InputBox("a(" & i & ")=") Next i For i = 1 To 4 t = i For j = i + 1 To 5 If a(t) > a(j) Then t = j Next j b = a(i) a(i) = a(t) a(t) = b Next i For i = 1 To 5 a(i); Next i 4. 输入一个三位数,分别输出它的百位数字、十位数字和个位数字。 Dim a As Integer Dim b As Integer, s As Integer, g As Integer a = InputBox("请输入一个三位数:") b = a 100 s = (a - b * 100) 10 g = a Mod 10 "百位数="; b "十位数="; s "个位数="; g 5. 计算sum=2+4+6+...+1000 变量sum需定义为Long类型 6 求下面级数前S项中奇数项的和sum。在求和过程中,以第一个奇数项的数值大于 10000 的项为末项。 1!-2!+3!-4!+ … +(-1)^(S-1)*S!+ … Dim sum As Double Dim p As Integer, s As Integer Dim t As Double s = 1 t = 1 p = (-1) ^ (s - 1) '控制符号位 t = t * s 's! sum = sum + p * t Do Until t > 10000 And s Mod 2 = 1 s = s + 1 p = (-1) ^ (s - 1) t = t * s sum = sum + p * t Loop "sum="; sum s t 7. 已知A、B为整数,A和B的立方和为1000,求所有的A、B。 Dim a As Integer, b As Integer, c As Integer For a = 0 To 10 For b = 0 To 10 If a ^ 3 + b ^ 3 = 1000 Then a ; b End If Next b Next a 8.编写一个函数,求某个数的阶乘。调用该函数计算22!。 9.编写函数,计算S=1/1!+1/3!+1/5!+...+1/9! 10.编写一个函数(参数为一维整型数组),求所有数组元素中最小值的下标。 11.用InputBox输入一个年份,判断该年份是否是平年,若是则输出“Yes”,否则输出“No”。 Dim y As Integer y = InputBox("请输入一个年份:") If y Mod 4 = 0 And y Mod 100 <> 0 Or y Mod 400 = 0 Then "No" Else "Yes" End If 12.编写一个函数,其功能为判断一个3位正整数是否是"水仙花数"。("水仙花数"是指各位数字的立方和与该数相 等,如153=1^3+5^3+3^3,153就是水仙花数。) Dim a As Integer Dim b As Integer, s As Integer, g As Integer a = InputBox("请输入一个三位数:") b = a 100 s = (a - b * 100) 10 g = a Mod 10 If a = b ^ 3 + s ^ 3 + g ^ 3 Then "是" Else "否" End If 13.定义一个下标上界为10整型数组,并为其赋值(值处于[0,100]之间), 计算数组中所有不小于60的数据的和。 Dim s(1 To 10) As Integer Dim i As Integer, t As Integer For i = 1 To 10 s(i) = InputBox("请输入[0,100]区间内的数:") If s(i) >= 60 Then t = t + s(i) Next i t 14.输入一个四位数,分别输出它的个位数字,是十位数字,百位数字,千位数字。 15.斐波那契数列是由计算某类动物繁殖增长量而提出的。数列的前两项是1、1,以后的每一项都是其相邻前两项 的和。编写程序求:数列前30项和。 Dim a(30) As Long, i As Integer, s As Long a(1) = 1 a(2) = 1 For i = 3 To 30 a(i) = a(i - 1) + a(i - 2) Next For i = 1 To 30 s = s + a(i) Next MsgBox s
版权声明:本文标题:VBA试题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1711481715a596277.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论