Protecting values of variables

B

Ben H

Hi all! I need to know of a way to protect the values of variables as they
are passed between function to function. I didn't notice this at first, but
it explains why my final answer was getting a number not physically posible.
Here's some code to help explain...

Sub Macro2()
a = 1
b = 2
c = 3
dummy = Ben(a, b, c)
End Sub

Function Ben(x, y, z)
x = y + z
Ben = x
End Function
Note, that at the "end sub" line, the value of "a" is now 5 instead of 2...
thanks for your help!
 
T

Tim Coddington

Use byVal in the function. I believe the default passing mechanism is
byRef.
When you use byVal, the value is copied to working storage separate from
that used in Macro2(), and so should protect Macro2()'s working storage.
Function Ben(ByVal x As Integer, ByVal y As Integer, ByVal z As Integer) As
Integer
 
A

AA2e72E

Unless you specify ByVal, the default ByRef is assumed & changes stick. See
below:
Function Ben(byval x, byval y, byval z)
x = y + z
Ben = x
End Function
 
Top