Como poner variables "a cero"

20/05/2005 - 09:46 por javi | Informe spam
Hola

Quería saber si hay alguna forma de poner todas las variables que he
incluido en un proyecto o parte de ellas (por ejemplo las de un
formuario) a cero, para liberar la memoria, pero sin tener que ir
anulándolas de una en una.

Gracias

JAvi

Preguntas similare

Leer las respuestas

#1 KL
20/05/2005 - 10:07 | Informe spam
Hola Javi,

Puedes usar la instruccion End, pero ojo - reseteara todas las variables
incluidas las Public. P.ej.:

'-
Public c as Range

Sub test()
Dim a As String
Dim b As Variant
'Mi codigo
End
End Sub
'-

Saludos,
KL


"javi" wrote in message
news:
Hola

Quería saber si hay alguna forma de poner todas las variables que he
incluido en un proyecto o parte de ellas (por ejemplo las de un formuario)
a cero, para liberar la memoria, pero sin tener que ir anulándolas de una
en una.

Gracias

JAvi
Respuesta Responder a este mensaje
#2 Manuel Romero
24/05/2005 - 17:39 | Informe spam
La instruccion End no es muy bienvenida en la programacion porque termina el
programa abruptamente sin cerrar los objetos que tengas abiertos en ese
momento o ejecutar algun codigo de limpieza que este definido en los objetos
(por ejemplo, recordsets o conexiones a base de datos).

Si tienes cuidado de cerrar las referencias que tengas antes de ejecutar
End, entonces si se puede usar.

"KL" escribió en el mensaje
news:uK$
Hola Javi,

Puedes usar la instruccion End, pero ojo - reseteara todas las variables
incluidas las Public. P.ej.:

'-
Public c as Range

Sub test()
Dim a As String
Dim b As Variant
'Mi codigo
End
End Sub
'-

Saludos,
KL


"javi" wrote in message
news:
Hola

Quería saber si hay alguna forma de poner todas las variables que he
incluido en un proyecto o parte de ellas (por ejemplo las de un
formuario) a cero, para liberar la memoria, pero sin tener que ir
anulándolas de una en una.

Gracias

JAvi




Respuesta Responder a este mensaje
#3 Manuel Romero
24/05/2005 - 17:40 | Informe spam
A proposito, la instruccion Erase hace lo que quieres, pero para vectores y
matrices.

"KL" escribió en el mensaje
news:uK$
Hola Javi,

Puedes usar la instruccion End, pero ojo - reseteara todas las variables
incluidas las Public. P.ej.:

'-
Public c as Range

Sub test()
Dim a As String
Dim b As Variant
'Mi codigo
End
End Sub
'-

Saludos,
KL


"javi" wrote in message
news:
Hola

Quería saber si hay alguna forma de poner todas las variables que he
incluido en un proyecto o parte de ellas (por ejemplo las de un
formuario) a cero, para liberar la memoria, pero sin tener que ir
anulándolas de una en una.

Gracias

JAvi




Respuesta Responder a este mensaje
#4 KL
24/05/2005 - 18:34 | Informe spam
Si pero solo para las matrices dinamicas. Las matrices fijas solo se ponen
los elementos a cero pero no se vacia la memoria. P.ej.

si tienes

Dim MiMatriz() As Variant

Redim MiMatriz(5)

Volevera al estado de declaracion: MiMatriz()

pero si tienes

Dim MiMatriz(5) As String
For i=0 to 4
MiMatriz(i)="Test" & i
Next

Entonces tu matriz se convertira de
MiMatriz("Test0","Test1","Test2","Test3","Test4") en
MiMatriz("","","","","")

o sea que el objetivo de librar memoria no se alcanza.

Saludos,
KL



"Manuel Romero" wrote in message
news:%
A proposito, la instruccion Erase hace lo que quieres, pero para vectores y
matrices.

"KL" escribió en el mensaje
news:uK$
Hola Javi,

Puedes usar la instruccion End, pero ojo - reseteara todas las variables
incluidas las Public. P.ej.:

'-
Public c as Range

Sub test()
Dim a As String
Dim b As Variant
'Mi codigo
End
End Sub
'-

Saludos,
KL


"javi" wrote in message
news:
Hola

Quería saber si hay alguna forma de poner todas las variables que he
incluido en un proyecto o parte de ellas (por ejemplo las de un
formuario) a cero, para liberar la memoria, pero sin tener que ir
anulándolas de una en una.

Gracias

JAvi








Respuesta Responder a este mensaje
#5 Manuel Romero
24/05/2005 - 20:26 | Informe spam
KL, tienes razon en cuanto al Erase, pero al terminar la ejecucion de mi
codigo, no se ejecuta automaticamente la limpieza de variables?, apenas las
variables terminan su ambito de alcance (fuera de un procedimiento).
Entonces liberar memoria con End no tiene mucho sentido (a mi modo de ver)
porque apenas llegue al End Sub o le haga Unload a un form las variables se
destruyen.

Hay una excepcion, y son las variables publicas de un formulario, las cuales
siguien existiendo aun despues del Unload, y si se llaman, no cargan el
formulario de nuevo. Diferente pasa si despues del Unload llamo a un
control, lo que genera automaticamente la carga del formulario nuevamente
(eso pasa en VB normal, habria que comprobarlo en VBA).


"KL" escribió en el mensaje
news:%
Si pero solo para las matrices dinamicas. Las matrices fijas solo se ponen
los elementos a cero pero no se vacia la memoria. P.ej.

si tienes

Dim MiMatriz() As Variant

Redim MiMatriz(5)

Volevera al estado de declaracion: MiMatriz()

pero si tienes

Dim MiMatriz(5) As String
For i=0 to 4
MiMatriz(i)="Test" & i
Next

Entonces tu matriz se convertira de
MiMatriz("Test0","Test1","Test2","Test3","Test4") en
MiMatriz("","","","","")

o sea que el objetivo de librar memoria no se alcanza.

Saludos,
KL



"Manuel Romero" wrote in message
news:%
A proposito, la instruccion Erase hace lo que quieres, pero para vectores
y matrices.

"KL" escribió en el mensaje
news:uK$
Hola Javi,

Puedes usar la instruccion End, pero ojo - reseteara todas las variables
incluidas las Public. P.ej.:

'-
Public c as Range

Sub test()
Dim a As String
Dim b As Variant
'Mi codigo
End
End Sub
'-

Saludos,
KL


"javi" wrote in message
news:
Hola

Quería saber si hay alguna forma de poner todas las variables que he
incluido en un proyecto o parte de ellas (por ejemplo las de un
formuario) a cero, para liberar la memoria, pero sin tener que ir
anulándolas de una en una.

Gracias

JAvi












email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida