sábado, 3 de septiembre de 2016

Declaración de variables en VBA para Excel

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.

¿Cómo declarar varias variables?

Podemos utilizar tres métodos:
El "extendido" sería declarar cada una de las variables en una línea. Por ejemplo:
          Dim J As Variant
          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:
          Dim J As Variant, H As Long, N As Integer
Con "signos", que sería sustituir "As XXXX" por un signo. Por ejemplo:
          Dim MiVariable$   (declara MiVariable como una variable de tipo String (texto)