Comprender la vida de las variables

Microsoft VBA

Comprender la vida de las variables

   

El tiempo durante el que una variable conserva su valor se conoce como vida. El valor de la variable puede cambiar durante su vida, pero conserva algún valor. Cuando una variable pierde su alcance, ya no tiene ningún valor.

Cuando un procedimiento comienza a ejecutarse, se inicializan todas las variables. Las variables numéricas se inicializan a cero, las cadenas de longitud variable se inicializan a una cadena vacía de longitud cero ("") y una cadena de longitud fija se llena con los caracteres correspondientes al código ASCII 0, o Chr(0). Las variables Variant se inicializan a Empty. Cada uno de los elementos de una variable de tipo definido por el usuario se inicializa como si se tratase de una variable independiente.

Cuando se declara una variable de objeto, se reserva el espacio correspondiente en memoria, pero se le da el valor Nothing hasta que se le asigne una referencia a objeto mediante la instrucción Set.

Si el valor de una variable no cambia durante la ejecución del código, conserva su valor de inicialización hasta que pierda alcance.

Una variable de nivel de procedimiento declarada mediante la instrucción Dim conserva su valor hasta que el procedimiento termina de ejecutarse. Si el procedimiento llama a otros procedimientos, la variable conserva su valor también mientras se ejecutan esos procedimientos.

Si una variable de nivel de procedimiento de declara con la palabra clave Static, la variable conserva su valor mientras haya código en ejecución, sea cual sea el módulo. Cuando todo el código ha terminado de ejecutarse, la variable pierde su alcance y su valor. Su vida es la misma que la de una variable de nivel de módulo.

Una variable de nivel de módulo es distinta a una variable estática. En un módulo estándar o un módulo de clase, conserva su valor hasta que se termina de ejecutar el código. En un módulo de clase conserva su valor mientras exista una definición de la clase. Las variables de nivel de módulo consumen memoria hasta que sus valores se vuelven a inicializa, por eso sólo se deben utilizar cuando sea necesario.

Si se incluye la palabra clave Static antes de una instrucción Sub o Function, los valores de todas las variables de nivel de procedimiento del procedimiento se conservarán entre las sucesivas llamadas.