Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Free up Memory: How to delete variables once am don with them- VBA VB ACCESS

Tags:

vba

How do i free up Memory?

Say I have a string

  Dim TestStri As String
  TestStri = "Test"

  ' What do i have to type up to get rid of the variable?

  ' I know
  TestStri = Nothing
  ' will give it the default value, but the variable is still there.

Can I use the same Method for other variables i.e. Long, int etc.

like image 713
Padawan Avatar asked Sep 27 '12 03:09

Padawan


People also ask

How do you clear a variable in VBA?

You can't "clear" a non-object variable, you can only set it to a defined value. For a string variable, that's usually the empty string "" . For object variables, there is Set myObj = Nothing . Please look below, VARIANT type variable can be set to EMPTY and then checked by IsEmpty() function.

Does End Sub clear variables?

Remarks. When executed, the End statement resets all module-level variables and all static local variables in all modules. To preserve the value of these variables, use the Stop statement instead. You can then resume execution while preserving the value of those variables.

What does VBA out of memory mean?

VBA's Error 7 (Out of Memory) occurs when your system runs out of resources to back up Excel to execute the macro. When you open an application in your system that takes a part of the resource and when you have to try to execute a macro and the resource that you have is not sufficient, you get the error 7.


1 Answers

I'm assuming you are referring to VB6 and VBA as indicated by your title, not VB.Net, as indicated by a keyword.

In VB6 and VBA the memory consumption of a string variable consists of a fixed part for the string's length and a terminator and a variable length part for the string contents itself. See http://www.aivosto.com/vbtips/stringopt2.html#memorylayout for a good explanation of this.

So, when you set the string variable to an empty string or vbNullString, you will be freeing up the variable part of the string but not the fixed part.

Other types like long, int, bool and date consume a fixed amount of memory.

You can't "free" local variables in VB completely (come to think of it, is there ANY programming language where you can do that?), and for the most part, you wouldn't care because the local variables themselves (the fixed portion) is usually very small.
The only case I can think of where the memory consumption of local varibles could get big is if you have recursive function calls with deep recursion/wide recursion.

like image 129
GTG Avatar answered Nov 15 '22 08:11

GTG