我定义了两个过程
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的值仍然没变?什么地方调用有问题吗?
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的值仍然没变?什么地方调用有问题吗?
全部用ByRef 就行
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 SubPrivate Sub Command2_Click()
a
End Sub
主函数
函数1(byref ...)
end函数1(byref ...)
调用函数2()
end
函数2(byref...)
调用函数3(byref...)
end
函数3(byref)
end
2 调用者必须声明变量,这样才会创建实例Sub bb(ByVal a As Integer, ByRef b As Integer, ByRef c As Integer)
b = 5
c = 6
End SubPrivate 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 Sub