Setting variables to Nothing

  • Thread starter Thread starter Matt Jensen
  • Start date Start date
M

Matt Jensen

As good programming practice, what of the possible variable types should be
set to nothing or null?
Can /should you set integers to nothing for example?
Thanks
Matt
 
integers can't be set to nothing. They are initialized to a value of zero.

You shouldn't have to worry about any type of local variable because they go
out of scope and are destroyed when the code in which they are defined stops
running.

No variables have a default value of Null, so you shouldn't use that.

Only objects can be set to Nothing

Dynamic arrays can be erased
 
Thanks Tom
Pertaining to that checkbox naming code you helped me with yesterday:

snippet

dim cb as OLEObject
Set cb = ws.OLEObjects.Add(ClassType:="Forms.CheckBox.1", _

I reuse / redfine this cb variable/object several times in one procedure,
should I set it to nothing before each I use it again or just at the end of
the proc?

Thanks
Matt
 
reassigning it to refer to another object is fine. You don't have to set it
to nothing along the way/in between.

If you want to set it to nothing at the end, you can, but when it hits End
Sub, it will be set to nothing by VBA anyway. (if I recall correctly that it
is local to that procedure).
 
Matt,

No need to keep re-setting to Nothing. It is the same variable, and it can
only have one value at any one time.

--

HTH

RP
(remove nothere from the email address if mailing direct)
 
If you're re-using that object variable for something that may not exist, it
might be better to set it to nothing to re-initialize it.

For example, I put a single checkbox on the activeworksheet:

Option Explicit

Sub Macro1()
Dim myCBX As MSForms.CheckBox

Set myCBX = ActiveSheet.CheckBox1

Set myCBX = Nothing '<-- try commenting this line
On Error Resume Next
Set myCBX = ActiveSheet.checkbox2
On Error GoTo 0

If myCBX Is Nothing Then
MsgBox "not there"
Else
MsgBox myCBX.Caption
End If

End Sub

Try it once with the line commented and once without the line being commented.

====
If you know the object exists, then you don't need this (as both Tom and Bob
wrote), but ....
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top