单选题 假定有以下两个过程:
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
下列说法正确的是_________。
【正确答案】 B
【答案解析】[解析] VBA中定义过程时如果省略传值方式则默认为按地址传递,过程S2中省略了参数传递方式说明,因此,参数将按传址调用;而过程S1由于声明为按值传递(ByVal),所以会按传值调用参数。而在过程调用时,如果按传值调用,实参只是把值传给了形参,在过程内部对形参值进行改变不会影响实参变量。按址调用却不同,这种方式是把实参的地址传给了形参,在过程中对形参值进行改变也会影响实参的值。因此,过程S2能够交换两个变量的值,而S1不能实现。因此本题答案为B。