Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
How to know if a variable has been reset inside other function
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 |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
How to know if a variable has been reset inside other function
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 |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
How to know if a variable has been reset inside other function
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 |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
How to know if a variable has been reset inside other function
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 |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
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 |
#6
Posted to microsoft.public.excel.programming
|
|||
|
|||
How to know if a variable has been reset inside other function
That's one approach.
I do opposite as speed is often important and many of my functions are used in loops. It saves me worrying about functions possibly slowing things down. When I write the function I just check it doesn't alter any variables that it shouldn't. ByRef is the default, so it saves a bit of coding as well. RBS "Jim Thomlinson" wrote in message ... 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 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Reset public variable | Excel Programming | |||
Using a range variable inside a excel function | Excel Discussion (Misc queries) | |||
Range variable not being reset | Excel Programming | |||
variable inside a formula? | Excel Programming | |||
variable that keeps its value until reset | Excel Programming |