问题 单项选择题

设有以下两个过程:
Sub S1(a As Integer,b As Integer)
t=a
a=b
b=t
End Sub
Sub S2(ByVal a As Integer, ByVal b As Integer)
t=a
a=b
b=t
End Sub
下列说法中正确的是( )。

A.过程S1能实现两个变量值的交换,S2不能

B.过程S2能实现两个变量值的交换,S1不能

C.过程S1和S2都不能实现两个变量值的交换

D.过程S1和S2都能实现两个变量值的交换

答案

参考答案:A

解析: 在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此时参数为传值调用;若形参用ByRef声明,说明此时参数为传址调用,即形参的结果会传递给实参。本题中S1的过程为传址调用,所以S1中交换的两个形参会影响到实参,可以实现实参的交换。S2过程为传值调用,S2中交换的两个形参不会影响到实参,也就不能实现实参的交换。

不定项选择
单项选择题