LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default Question about a Variable being Nothing

Variables (or objects as in this case) are either persistent or volatile.
Public variables are persistent. To give you an idea what is going on when
you start the spreadsheet your system reserves space for all of your global
variables (on the heap). These memory allocations will persist for the
duration that you have the spreadsheet open. You can refer to global
variables at any point and they will return back the last value that was
passed to them. So in your case as soon as you point Var1 and myRange at a
range, then that range is held in memory until you do something to change it.
The other form of persistent variables are any varaibles declared as static
within a procedure. They are also stored on the heap.

Volatile variables are any variables declared within a sub or function.
Memory is only allocated to these variables when the procedure is call and
the memory is destroyed once the function or sub has ended (memory is set
aside on the stack and not the heap).

As a general rule of thumb you want to minimize you use of global variables
as they can be extremely difficult to debug as the value is accessible to the
entire program so if at any point the value is incorrect it can be difficult
to determine just which function or procedure cause the problem.

As a complete aside you declaration is probably not what you think it is.
You might thingk you have 2 range objects but you actually have one range
object and one variant. Check out this link...
http://www.cpearson.com/excel/variables.htm

--
HTH...

Jim Thomlinson


"J@Y" wrote:

This is a simplified version of the code. I actually use Var1 in another sub,
that's why I have it as Public. What exactly does the Public declaration do
to my variable in this case?

"Pranav Vaidya" wrote:

the only problem is with declaration.
Declare variable Var1 inside sub B and your problem should be solved.
Remove the public declaration of Var1.
--
Pranav Vaidya
VBA Developer
PN, MH-India
If you think my answer is useful, please rate this post as an ANSWER!!


"J@Y" wrote:

This is my Code:
Public Var1, MyRange as Range


Sub A

For c = 1to 10 do
Call Sub B
Next c

end Sub A

Sub B

Set Var1 = MyRange.Find("Blah", lookat:=xlPart, _
Searchorder:=xlByRows)

if Not (Var1 is Nothing) then
Debug.print "Var1 exist"
end if

end Sub B

Sub B gets looped 10 times. I run into this problem where if Var1 is found
in one iteration, in the next iteration, even though it doesn't refer to any
Range, it is not recognized as Nothing anymore. Why is that?

 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Variable name question JTWarthogs Excel Discussion (Misc queries) 3 May 7th 09 02:22 PM
variable question peyman Excel Discussion (Misc queries) 3 October 16th 07 12:33 AM
Variable Question alvin Kuiper Excel Programming 4 February 12th 06 01:14 PM
variable question Gary Keramidas[_2_] Excel Programming 5 September 2nd 05 08:30 AM
variable Question Shane Excel Programming 2 July 5th 04 08:30 AM


All times are GMT +1. The time now is 01:17 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"