问题 单项选择题

假定在窗体中的通用声明段已经定义有如下的子过程:

Sub f(x As Single,y As Single)

t=x

x=y

y=x

End Sub

在窗体上添加一个命令按钮(名为Command1),然后编写如下事件过程:

PrivateSubCommand1_Click()

a=10

b=20

f(a,B)

MsgBox a&b

End Sub

打开窗体运行后,单击命令按钮,消息框输出的值分别为( )。

A.20和10

B.10和20

C.10和10

D.20和20

答案

参考答案:A

解析: 本题考查VBA中参数传递的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用:没有说明传递类型,则默认为传址传递。即形参的结果会传递给实参。本题中形参完成了交换,由于默认为传址传递,交换后的值也会影响到实参a和b,即a和b完成了交换。

填空题
单项选择题