显然,你是想要了解byref和byval传值和传址两种传递的区别 不过你的代码错漏太多了,没有理解参数和传入参数到底是什么! private sub command1_Click() dim x as integer, y as integer '注意变量类型必须与参数类型相匹配 x = 5 : y = 8 call proc(x,y) label1.caption = x label2.caption = y end sub 从上面的代码可以看出,你是想通过调用proc,期望通过proc改变x和y的值。那么,显然你的proc这个过程写法是有错误的。 public sub proc(byval a as integer,byref b as integer) '我这里稍微修改了一下,a参数为传值,b参数为传址 a = a - b b = a * b end sub 那么这个时候的proc过程才有意思,command1_Click过程里面的两个变量x,y分别以参数a,b的形式传入到proc过程的时候,a因为是传值,那么a不能修改传入变量x的值,而b是传址,那么y传入到b的时候直接将内存地址传递给b,b的值变化,那么y的值也会跟随变化。 所以,最后我们得到 a = 5 - 8 = -3 b = a * b = -3 * 8 = -24 因为x是传值传递,所以x的值不受任何影响,而y的值跟随b变化,所以 Label1.caption = 5, label2.caption = -24