View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Jim Thomlinson Jim Thomlinson is offline
external usenet poster
 
Posts: 5,939
Default How to know if a variable has been reset inside other function

Just to elaborate... You should always pass by value unless you have reason
not to (IMO). It makes debugging a pile easier since you know the values of
variables can not be changed by other subs or functions. You should note
however that there is a penalty to pass by value and that is that you are
passing a copy of the variable and there is some (ususally very small)
overhead in creating the copy to be passed. The amount of overhead depends on
the variable that you are passing and in the case of strings it can be a fair
bit of overhead. So if you are in the need for speed and you are passing
strings in a loop you should probably pass by reference. Just my 2 cents...
--
HTH...

Jim Thomlinson


"RB Smissaert" wrote:

That's it. Looks you learned something useful there.

RBS

"Alex St-Pierre" wrote in message
...
Thanks, it's what I needed. I will use ByVal inside function.
If I use twice i as in the example below, i is not reset in the function.
What I understand is that it's only the elements inside function that are
re-formated (with ByRef).

Sub temp()
Dim iValue as integer
iValue = 10
For i = 1 to 10
Temp = myFunction(iValue)
Next i
End Sub

Function myFunction(ByVal iValue as integer)
Dim i as integer
For i = 1 to 3
'treatment...
Next i
End Function

--
Alex St-Pierre


"RB Smissaert" wrote:

If your intention is to use the variable in the function and alter it
only
temporarily while the function does it job then the answer is to pass
those variables ByVal.
Default is ByRef and that can leave it in an altered state after the
function
is finished.
Best to look this up in the VBA help.

RBS


"Alex St-Pierre" wrote in
message
...
Hi,
My program use a lot of function and sometimes, the variables are reset
because it call a function that use the same variable name. I have
sometimes,
Function inside Function inside Function and it's very hard to make all
differents. Is there a way to insure no variable will be reset?? Like a
program compilation or execution option or something else?
Thanks a lot!
--
Alex St-Pierre