为什么ByRef的参数不能返回改变的值
我定义了两个过程
Sub A
……
a=1
b=2
c=3
Call B(a,b,c)
……
Sub B(ByVal a as Integer,ByRef b as Integer,ByRef c as Integer)
b=5
c=6
End Sub
可为什么调用之后a,b,c的值仍然没变?什么地方调用有问题吗?
问题点数:20、回复次数:4Top
1 楼tztz520(午夜逛街)回复于 2006-03-19 21:44:20 得分 0
可以的.
全部用ByRef 就行Top
2 楼tztz520(午夜逛街)回复于 2006-03-19 21:44:46 得分 4
Private Sub a()
Dim a As Integer, b As Integer, c As Integer
a = 1
b = 2
c = 3
Call bb(a, b, c)
MsgBox a
MsgBox b
MsgBox c
End Sub
Private Sub bb(ByRef a As Integer, ByRef b As Integer, ByRef c As Integer)
b = 5
c = 6
a = 4
End Sub
Private Sub Command2_Click()
a
End SubTop
3 楼Freshmen007_Bug()回复于 2006-03-20 09:52:00 得分 1
有个问题,需要提醒的是,在多个函数调用时,最好不要使用三重以上的Byref。
就是最好不要这样用:
主函数
函数1(byref ...)
end
函数1(byref ...)
调用函数2()
end
函数2(byref...)
调用函数3(byref...)
end
函数3(byref)
endTop
4 楼of123()回复于 2006-03-20 10:27:25 得分 15
1 变量名和函数名不得相互混淆
2 调用者必须声明变量,这样才会创建实例
Sub bb(ByVal a As Integer, ByRef b As Integer, ByRef c As Integer)
b = 5
c = 6
End Sub
Private Sub Form_Click()
Dim a As Integer, b As Integer, c As Integer '很重要
a = 1
b = 2
c = 3
Call bb(a, b, c)
Debug.Print a, b, c
End SubTop




