ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Protecting values of variables (https://www.excelbanter.com/excel-programming/308613-protecting-values-variables.html)

Ben H

Protecting values of variables
 
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!

Tim Coddington

Protecting values of variables
 
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

"Ben H" wrote in message
...
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!




AA2e72E

Protecting values of variables
 
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

"Ben H" wrote:

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!



All times are GMT +1. The time now is 03:43 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com