问题
填空题
在窗体中添加一个名称为Command1的命令按钮,然后编写如下事件代码:
Private Sub Command1_Click()
Dim x As Integer,y As Integer
x=12:y=32
CaU p(x,y)
MsgBox x * y
End Sub
Public Sub p(n As Integer,ByVal m As Integer)
n=n Mod 10
m=m Mod 10
End Sub
窗体打开运行后,单击命令按钮,则消息框的输出结果为______。
答案
参考答案:64
解析: 本题考查的是VBA编程基础、参数调用。子过程p有两个参数m和n,参数m、n是整型,而通过“ByVal”可知,参数m是按值传递的参数。由于在过程定义时未做参数说明的情况下默认为传址调用,所以参数n是按址传递。由于按址传递的过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化,又会反向影响实参的值。在这个过程中,数据的传递具有双向性。
在命令按钮单击事件过程中,程序通过两个实参x、y为形参m、n赋值,“n=n Mod 10”表示12与10取余,结果为2,由于n是传址调用,所以返回实参的结果为x=2,而形参m因为被“By—Val”修饰,所以过程调用只是将实参y的值“单向”传送给形参m处理,而被调用过程内部对形参m的取余操作引起的形参值的变化均不会反馈、影响实参y的值,也就是说实参y=32,通过语句“MsgBox x * y”,可以得出x * y=2 * 32=64,也就是窗体打开运行后,单击命令按钮,则消息框的输出结果为64。