请教byref和byval 的问题,请进来看看,谢谢~
Sub Add1(ByVal n As Integer)
n = n + 100
End Sub
Sub Add2(ByRef m As Integer)
m = m + 100
End Sub
Private 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就对了.知道的大侠们说说啊,谢谢了!
[解决办法]
看来很多人对VB的语法不够了解啊
调用过程有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 Sub
Sub Add2(ByRef m As Integer)
m = m + 100
End Sub
Private Sub Command1_Click()
Dim a As Integer
a = 100
Add1 a
Text1.Text = a
Add2 a
Text2.Text = a
End Sub
[解决办法]
注意,vb调用过程是不需要加括号的