L
Lyndon
Hi all,
Is there any way to pass an object (created from a custom Class) by
Value in VBA..? I have tried using the ByVal keyword in my procedure
but the object is still being passed by reference (the original object
is modified in the procedure code). Here's my code:
For the Class module (called Test):
Private classVar1 As String
Property Get Number() As String
Number = classVar1
End Property
Property Let Number(ByVal newvalue As String)
classVar1 = newvalue
End Property
In the main Module:
Private Test1 As Test
Private Sub Initiate()
Set Test1 = New Test
Let Test1.Number = "1"
Call AnotherSub(Test1)
MsgBox Test1.Number 'Shows 2 not 1 even though it should be passed
ByVal, not ByRef
End Sub
Private Sub AnotherSub(ByVal t As Test)
Let t.Number = "2"
End Sub
How do I force VBA to pass this Class ByVal or can't it be done..?
Thanks,
Lyndon.
Is there any way to pass an object (created from a custom Class) by
Value in VBA..? I have tried using the ByVal keyword in my procedure
but the object is still being passed by reference (the original object
is modified in the procedure code). Here's my code:
For the Class module (called Test):
Private classVar1 As String
Property Get Number() As String
Number = classVar1
End Property
Property Let Number(ByVal newvalue As String)
classVar1 = newvalue
End Property
In the main Module:
Private Test1 As Test
Private Sub Initiate()
Set Test1 = New Test
Let Test1.Number = "1"
Call AnotherSub(Test1)
MsgBox Test1.Number 'Shows 2 not 1 even though it should be passed
ByVal, not ByRef
End Sub
Private Sub AnotherSub(ByVal t As Test)
Let t.Number = "2"
End Sub
How do I force VBA to pass this Class ByVal or can't it be done..?
Thanks,
Lyndon.