Declaración de variables en Excel VBA

En Excel VBA se puede declarar las variables o no, si estas no se declaran el programa las toma automáticamente como si fueran del tipo “variant”. De esta forma una variable puede tomar distintos valores, desde numeros enteros (Integer), números reales (Double), cadenas (String), fechas (Date), etc, pero debido a su condición de “variant” ocupará más memoria. Que no es lo deseable.

Para evitar este problema, se puede usar la sentencia Option Explicit al inicio del módulo, esto nos obliga a declarar todas las variables que empleemos. Para declarar una variable se usa la palabra clave Dim, de forma general una variable se declara de esta forma: Dim nombre_variable as tipo_variable, por ejemplo Dim num as Double.

Ahora si es que se quiere emplear una variable en una subrutina (Sub) o función (Function), ¿como declararlos?

Habiendo agregado la sentencia Option Explicit, nos vemos obligados a declarar cada una de las variables. Las variables que se declaran dentro de cada procedimiento o subrutina son por defecto privados, pertenecen al procedimiento o subrutina que los declaró y existen hasta que se termine de ejecutar tal procedimiento o función. Por ejemplo si tenemos el siguiente sub:

Sub A()
Dim x as integer
x = 2*x-1
End Sub

Y el Sub Main que llama a Sub A

Sub Main()
Dim x as integer
x = 10
Call A
Msgbox x
End Sub

Entonces al ejecutar Main, el Mensaje sera el valor de 10, ya que apesar que se llama al Sub A y este trabaja con una variable x, el alcance de esta x es sólo dentro del Sub A y al terminar regresa el control sobre el x declarado en Main. La moraleja de esto es que cuando se declara como Dim o Private dichas variables sólo son válidas dentro de la subrutina o función donde se crearon.

Ahora si se declarase de la siguiente manera:

Option explicit
Public x as integer

Sub A()
x = 2*x-1
End Sub

Y el Sub Main que llama a Sub A

Sub Main()
x = 10
Call A
Msgbox x
End Sub

Luego al ejecutar Main, el mensaje será 19, puesto que la variable x al ser declarada como Public se puede usar dentro de cualquier subrutina y/o función.

Espero que haya sido de ayuda.

Saludos.

Posted in excel, excel programming, excel vba Tagged with:

Facebook comments:

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Make a computation for validation *
Time limit is exhausted. Please reload CAPTCHA.

Traducir