问题 填空题

在窗体中添加一个名称为Com1的命令按钮,然后编写如下程序:
Private Sub s(ByVal p As Integer)
p=p*2
End Sub
Private Sub Com1_Click()
Dim i As Integer
i=3
Call s(i)
If i>4 Then i=i^2
MsgBox i
End sub
窗体打开运行后,单击命令按钮,则消息框的输出结果为______。

答案

参考答案:C

解析: 本题考查VBA程序的知识。在VBA的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用,此时形参的变化不会返回到实参;若用ByRef声明,说明此参数为传址调用,此时形参的变化将会返回到实参:没有说明传递类型,则默认为传址传递。此题中形参p被说明为ByVal传值形式的整型量,当运行Com1_Click()过程时调用s()函数,实参i传送其值给形参p,p发生变化p=p*2=3*2=6。但因为使用的是ByVal传值传递,所以实参i的值不发生变化,if语句中的判断条件为假,所以会直接执行MsgBox i语句后输出3。

选择题
多项选择题