lunes, 25 de marzo de 2013

¿Qué es una variable en VBA para Excel?


Iniciamos con este artículo una serie dedicada a las variables en Visual Basic for Applications (VBA) para Excel.

¿Qué es una variable?

En el ámbito de la programación en VBA, una variable es un nombre que hace las funciones de contenedor polivalente que puede albergar distintos valores o datos. De similar forma, en una ecuación todos sabemos que una X también hace las veces de contenedor que en un momento dado puede tener un valor, pero en otro momento o circunstancia puede tener otro distinto.


Si queremos expresar la comisión que obtendrá un comercial (3%) en función de las ventas de pares de zapatos que hay en una empresa, podríamos hacerlo así:

(Nº de pares de zapatos * 20 €)  * 0,03 = Comisión

Pero si, por ejemplo, en un contrato o cualquier otro documento, repetidas veces debemos reflejar y dejar claro cómo se calcula la comisión del comercial sería mucho más eficiente representar el cálculo de las Ventas por una sola palabra... así:

Ventas*0,03 = Comisión

De esta última forma ahorramos tinta, papel,  tiempo de escritura y tiempo de lectura. Además, reducimos considerablemente el riesgo de faltas de ortografía y de olvidar el precio de venta por par de zapatos. Acabamos de utilizar la variable Ventas.

Cuando estamos programando en Visual Basic ocurre lo mismo que en el ejemplo anterior. A veces necesitamos utilizar repetidas veces un valor que puede variar en algún momento dado y es conveniente asignarle un nombre que lo represente y que sea fácil recordar. Por ejemplo:

Ventas = WorkSheets("Hoja1").Range("A1").Value

Con la creación de la variable Ventas, cada vez que tengamos que hacer referencia e ella en nuestra macro o procedimiento, sólo tenemos que poner Ventas en vez de  WorkSheets("Hoja1").Range("A1").Value

Un ejemplo de utilización


Sub Variable()

    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


... en vez de haber escrito todo este código:


Sub SinVariable()

    MsgBox ("Las ventas mensuales han sido " & Hoja2.Range("A1").Value * 0.03)
    Range("A2") = Hoja2.Range("A1").Value * 0.03
    MsgBox ("El promedio de ventas diarias ha sido de " & Hoja2.Range("A1").Value / 20)
    Range("A3") = Hoja2.Range("A1").Value / 20

End Sub


... que es más ineficiente por ser más largo (más difícil de interpretar, lento al ejecutarlo, susceptible de errores al escribirlo, etc.).

Declaración de variables (introducción)

Una vez dicho todo esto, debemos añadir que Excel interpreta de forma inteligente el tipo de variable a la que nos estamos refiriendo. Es decir, en los ejemplos anteriores la variable se refería a valores numéricos, pero en otros casos pueden ser textos, fechas, etc.

Ese "reconocimiento inteligente" que hace Excel del tipo de variable, requiere la utilización de más memoria de nuestro ordenador (debido a que asigna por defecto un tipo de variable-comodín llamado "variant"y por lo tanto es conveniente facilitarle las cosas indicándolo nosotros en lo que se llama una "declaración de variable".

Haciendo una analogía en otros ámbitos, cuando tenemos que interpretar un gráfico que tiene varias series o categorías, suele existir una leyenda que identifica cada serie con el tipo de gráfico. Pues esa leyenda sería la "declaración de series" similar a una declaración de variables en VBA.


En el próximo artículo trataremos más a fondo el tema de la declaración de variables y por qué realizarla.

Declaración de variables en VBA para Excel (I)
Declaración de variables en VBA para Excel (II)
Declaración de variables en VBA para Excel (III)

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:








3 comentarios: