Variables estáticas en VBA

Las variables en VBA son una parte esencial de la programación. Como alguien me dijo hace mucho tiempo, las palabras pequeñas en programación son las más importantes… de las largas se acuerda todo el mundo.

Introducción a las variables estáticas en VBA

Las variables estáticas en VBA se declaran de manera similar a las variables no estáticas. Su comportamiento es diferente.

Las variables normales que declaramos empezando por Dim (más sobre declarar variables) se guardan en la memoria de Excel hasta que terminamos el procedimiento (qué es una macro?) o cerramos el formulario que estamos utilizando.

En cambio, las variables estáticas se guardan en memoria siempre que mantengamos el libro de Excel abierto o no demos al botón de Resetear de la cinta de opciones.1 botón restablecer

Declarar variables estáticas

Declarar variables estáticas en VBA es muy sencillo, siemplemente antes de escribir nuestra variable y en vez de escribir la palabra Dim escribiremos la palabra Static.

Por ejemplo, si queremos declarar la variable “x” como variable estática usaremos el siguiente código:

Static x as Integer

Ejemplos de variables estáticas en VBA

En el siguiente pedacito de código, cada vez que lo ejecutemos tendremos el mismo valor, es decir 1, porque la variable no la estamos declarando como estática:

Sub Ejemplo1()

Dim x As Integer
x = x + 1
MsgBox x

End Sub

En cambio, en el siguiente ejemplo, cada vez que ejecutemos la macro obtendremos resultados correlativos, primero el 1, luego el 2, luego el 3… y así sucesivamente.

Sub Ejemplo2()

    Static x As Integer
    
    x = x + 1
    
    MsgBox x

End Sub

Bonus track: Ejercicio propuesto

Crear una pequeña macro que cada vez que se ejecute agregue un nuevo caracter a una cadena de texto y que se visualice en pantalla.

La solución a este ejercicio no es muy compleja pero deberemos usar la función CHAR que nos devuelva un caracter y la función RANDBETWEEN para generar números aleatorios en VBA.

La macro resultante sería la siguiente:

Sub Generar_Cadena_Aleatorio()

    Dim x As Integer
    
    Static Texto As String
    
    x = WorksheetFunction.RandBetween(100, 200)
    
    Texto = Texto & Chr(x)
    
    MsgBox Texto

End Sub

En el ejemplo anterior hemos declarado dos variables, una como variable normal (la variable x) y otra como variable estática (la variable Texto). En la variable x simplemente generamos un valor aleatorio cada vez que se ejecuta la macro y en la variable Texto vamos guardando los diferentes resultados que vamos obteniendo y añadiéndole un caracter cada vez que ejecutamos la macro.

(Visited 8.305 times, 1 visits today)
Categorías VBA

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies