Es conveniente leer el artículo ¿Qué es una variable en VBA para Excel? antes de abordar el actual, especialmente si el lector no conoce qué es una variable.
Una vez que nos decidimos a utilizar una variable en nuestro código VBA de Excel, aunque no es obligatorio, lo ortodoxo es declararla previamente. Esto es, decirle a Excel de forma explícita que la vamos a utilizar.
¿Cómo declarar una variable?
La forma por medio de la cual se declara una variable depende de varios factores. Uno de ellos es dónde la vamos a utilizar posteriormente (sólo en la macro actual o en otras macros). De momento nos vamos a referir a variables que se utilizan en una misma macro. Es decir, su vida y su ámbito de actuación es lo que tarda una macro en ejecutarse.
Una declaración de variable sería:
Dim Ventas As Double
Que significa:
Establecer Ventas como VariableTipoNúmeroDecimalDoble
Una vez declarada, la variable se puede utilizar asignándole previamente un valor, como en esta macro:
Sub Variable()
Dim Ventas As Double
Ventas = Hoja2.Range("A1").Value
MsgBox ("Las ventas mensuales han sido " & Ventas * 0.03)
Range("A2") = Ventas * 0.03
MsgBox ("El promedio de ventas diarias ha sido de " & Ventas / 20)
Range("A3") = Ventas / 20
End Sub
¿Qué tipos de datos puede representar una variable?
En el ejemplo anterior, era Double (tipo decimal que puede albergar valores con deimales desde +/- 5E-324 hasta 1.8E308 y nos ocupará 8 bytes en la memoria de nuestro ordenador) , pero por supuesto, existen otros que ocupan más o menos memoria y que tienen distintas características y posibilidades. Podemos ver un resumen en la web msdn de Microsoft.
Podemos utilizar tres métodos:
¿Cómo declarar varias variables?
- El "extendido" sería declarar cada una de las variables en una línea. Por ejemplo:
Dim H as Long
Dim N as Integer
- El "comprimido" sería declarar todas las variables a la vez en una línea de código:
- Con "signos", que sería sustituir "As XXXX" por un signo. Por ejemplo:
¿Por qué declarar variables?
Si no es obligatorio declarar variables, ¿por qué hacerlo?
La ortodoxia en programación dice que las variables hay que declararlas, al igual que la ortodoxia en la creación de gráficos dice que es necesaria una leyenda para identificar las categorías representadas, al igual que la ortodoxia dice que nuestro hogar debe estar ordenado para vivir de forma más cómoda y eficiente.
Si declaramos las variables:
- Ocuparán menos espacio en memoria, que si no las declaramos (por defecto, Visual Basic asignaría el tipo variant que ocupa bastante memoria: 22 bits).
- Nuestra macro será difícil de interpretar para otros usuarios que puedan necesitar leer el código VBA (incluso para nosotros mismos). Tener al principio de la macro una lista con las variables declaradas resulta muy util y aclarador.
- Podríamos utilizar esa variable posteriormente en varias macros. En este caso, la forma de declarar la variable no es exactamente igual, sino que la línea Dim Variable As TipoDato se debe colocar al principio de todo el módulo para que el ámbito de la variable sea precisamente de módulo y no a nivel de una macro concreta (ámbito local a nivel procedimiento):
Está claro que si nuestra macro es muy pequeña y de uso totalmente particular quizá no sea necesaria la declaración de variables.
Por último, decir que podemos hacer que el editor de VBA nos obligue a declarar las variables para evitar olvidos. Esto se hace desde el menú "Herramientas" y después seleccionando "Opciones..." y por último activar la siguiente casilla:
Una vez hecho esto y a partir de ahora, veremos esto al principio de cada módulo que inciemos:
... y no funcionará cualquier variable que no haya sido declarada antes.
En el siguiente artículo veremos la posibilidad y la forma de declarar variables objeto. Hasta ahora, las variables a las que nos hemos referido albergan valores (de un tipo u otro, pero valores), pero también las variables pueden representar a objetos.... como por ejemplo, celdas, hojas, etc. Veremos que en ocasiones son muy útiles las variables de objeto:
Si desea llevar a la práctica todo lo que le hemos ofrecido en este artículo, puede asistir a nuestros cursos prácticos de Excel o puede solicitarlos in company:
Fascinante...
ResponderEliminarComo solucionar que una variable pierda su valor
ResponderEliminarMira este artículo:
Eliminarhttp://temporaexcel.blogspot.com.es/2013/12/DeclaracionVariablesVBAIII.html
Saludos
pedo inicializar varias variables en un solo renglon?
ResponderEliminarejemplo sin son strings, puedo hacer
a=b=c=""
Hola Juan David:
ResponderEliminarEsa expresión es errónea en VBA
Las variables se reinician solas al terminar la macro.
Pero si quieres forzarlo, debes utilizar:
a=""
b=""
c=""
Saludos