在窗体中添加一个名称为Com1的命令按钮,然后编写如下程序: Private Sub s(ByVal p As Integer) p=p*2 End Sub Private Sub Com1_Click() Dim i

admin2011-06-07  23

问题 在窗体中添加一个名称为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

   End sub
窗体打开运行后,单击命令按钮,则消息框的输出结果为(       )。

选项

答案3

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

最新回复(0)