Sub Add1(ByVal n As Integer)
n = n + 100
End SubSub Add2(ByRef m As Integer)
m = m + 100
End SubPrivate Sub Command1_Click()
Dim a As Integer
a = 100
Add1 (a)
Text1.Text = a
Add2 (a)
Text2.Text = a
End Sub
这段程序执行结果应该是什么?网上说因为add1是值传递方法,所以a的值不变应该是100,add2用的引用传递,所以a的值要变成200,但是我执行的结果是都为100啊??是怎么回事?
还有个问题想请教大家,为什么我用byval的方式向一个dll里面传参数的时候虽然不会报错,但是收到的参数却不对,改为用byref就对了.知道的大侠们说说啊,谢谢了!
n = n + 100
End SubSub Add2(ByRef m As Integer)
m = m + 100
End SubPrivate Sub Command1_Click()
Dim a As Integer
a = 100
Add1 (a)
Text1.Text = a
Add2 (a)
Text2.Text = a
End Sub
这段程序执行结果应该是什么?网上说因为add1是值传递方法,所以a的值不变应该是100,add2用的引用传递,所以a的值要变成200,但是我执行的结果是都为100啊??是怎么回事?
还有个问题想请教大家,为什么我用byval的方式向一个dll里面传参数的时候虽然不会报错,但是收到的参数却不对,改为用byref就对了.知道的大侠们说说啊,谢谢了!
调用过程有2种方法
第一种:
call subname(var1,var2..)
第二种:
subname var1,var2..
假如只有1个 参数 并且你这样调用
subname (var1)
那么其中的var1就只不过是 "(var1)" 这个表达式中的1个变量而已所以这样只会按"(var1)" 这个运算式的值来传递修改如下:
Sub Add1(ByVal n As Integer)
n = n + 100
End SubSub Add2(ByRef m As Integer)
m = m + 100
End SubPrivate Sub Command1_Click()
Dim a As Integer
a = 100
Add1 a
Text1.Text = a
Add2 a
Text2.Text = a
End Sub