在窗体上有一个命令按钮Commandl,编写事件代码如下:
PrivateSubCommandl_Click()
DimxAsInteger,yAsInteger
x=12:y=32
CallProc(x,y)
Debug.Printx;y
EndSub
PublicSubProc(nAsInteger,ByValmAsInteger)
n=nModl0
m=mModl0
EndSub
打开窗体运行后,单击命令按钮,立即窗口上输出的结果是()。
A.2 32
B.12 3
C.2 2
D.12 32
参考答案:A
解析:
过程定义时,如果形式参数被说明为传值(ByVal项),则过程调用只是相应位置实参的值“单向”传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化均不会影响实参的值。这个过程中,数据的传递只是单向性,故称为“传值调用”的“单向”作用形式。反之,如果形式参数被说明为传址(ByRef项),则过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化都会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为“传址调用”的“双向”作用形式。在过程定义时,如果未做参数说明,则默认为传址调用。本题在Commandl_Click()函数中通过语句“Call Proc(x,y)”调用子函数,变量n为传址调用,变量m为传值调用,所以程序输出结果为:2 32。