问题 填空题

在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码:
Private Sub Command1 Click()
Dim x As Integer,y As Integer
x=12:y=32
Call p(x,y)
MsgBox x*y
End Sub
Public Sub P(n As Integer,By Val m As Integer)
n=n Mod 10
m=m Mod 10
End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果为______。

答案

参考答案:64

解析: VBA的过程调用的参数传递有两种方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明;说明此参数为传值调用,这时形参的变化不会返回给实参:若用ByRef声明,说明此参数为传址调用,此时形参的变化将会返回给实参,如果没有说明传递类型,则默认为传址方式。本题中在定义子过程p的时候用ByVal声明了形参m,说明为传值调用,此时对m不会影响调用它的实参y;而形参n默认为传址调用,此时对n做任何改变都会影响实参x。所以调用过程结束后,x的值变为2,y仍然为32,因此最后的结果为64。

判断题
单项选择题