Ambito de las variables

El ámbito de una variable es el contexto dentro del que la variable está definida. Esto implica los sitios en donde dicha variable puede ser empleada y por tanto reconocida. Las variables globales o públicas se pueden acceder en cualquier lugar de la página, mientras que las variables locales o privadas  sólo tienen validez dentro de la función donde han sido creadas. De modo que una variable global la podemos acceder dentro de cualquier parte del código, mientras que si intentamos acceder a una variable local fuera de la función donde fue creada, nos encontraremos con que esa variable no tiene contenido alguno.

Para entenderlo mejor vamos a realizar el siguiente ejemplo. Abra el editor e inserte el siguiente módulo:

Sub ejemplo3()
‘variable local
Dim pregunta As String

pregunta = InputBox(«¿Usuario?»)
Cells(1, 1) = pregunta
End Sub

El ejercicio nos pregunta que insertemos un nombre de usuario, que posteriormente se inserta en la celda A1. Hemos declarado la variable de forma local a nivel de módulo o procedimiento. Si a continuación insertáramos otro módulo exactamente igual pero sin la definición de la variable nos daría lugar a un error:

Sub ejemplo4()
pregunta = InputBox(«¿Usuario?»)
Cells(1, 1) = pregunta
End Sub

Por lo tanto para remediar esto y poder hacer uso de la variable que hemos definido a lo largo de todos los procedimientos del presente proyecto hemos de definir la variable con la palabra Public  inmediatamente debajo de la frase Option Explicit:

Option Explicit
Public pregunta As String

Hágalo y ejecute el código anterior, verá que desaparece el error y funciona correctamente.

Creando tipos definidos por el usuario

Con los tipos de variables ya comentados tenemos cubierto un amplio espectro suficiente para la mayoría de situaciones que se pueden presentar. No obstante podemos establecer tipos de datos definidos por nosotros mismos. Esto nos facilita trabajar con elementos que estén relacionados en una misma estructura. Supongamos que nuestro programa trabaja con una cartera de valores. En este caso puede que nos interese trabajar con tipo de valor (acciones, bonos,obligaciones,…),empresa emisora, año de emisión o compra y valor de mercado. En ese caso definiríamos los tipos de la siguiente forma:

Dim tipovalor as Sring

Dim empresaemisora as String

Dim año as Date

Dim valormercado as Integer

El problema se platearía si quisiéramos trabajar con datos de varias empresas a la vez. Podríamos definir varias variables para cada una de las empresas. Pero esto sería muy tedioso con lo que se hace mejor definir un tipo de datos Valorempresa que guarde toda la información que precisemos. Para ello escribiriamos el código que sigue a continuación:

Type Valorempresa

tipovalor As String

empresaemisora as String

año as Date

valormercado as Integer

End Type

A partir de aquí podemos utilizar este tipo de datos como cualquier otro. Por ejemplo:

Dim mivalor as Valorempresa

mivalor.Valorempresa=»Telefonica»

mivalor.tipovalor=»Acciones»

mivalor.empresaemisora=»Telefonica»

mivalor.año=»2010″

mivalor.valormercado=»8.75″

Los datos en VBA (variables y constantes)

Es corriente que en programación precisemos trabajar con datos que necesitamos guardar en memoria, para poder emplearlos después en nuestros módulos o subrutinas. Estos datos pueden variar de una ocasión a otra, imaginemos el ejemplo de la función suma en la que precisamos guardar en dos variables los números con los que deseamos operar. Para ello por lo tanto precisamos de las variables.

Su empleo debe seguir unas reglas determinadas:

  • La denominación de nuestra variable debe empezar con una letra y no con un número.
  • No debe de tener más de 250 caracteres.
  • No puede emplearse las palabras reservadas para la sintáxis de la propia Excel. Por ejmplo no podemos llamar a una variable con el nombre de WorkSheet etc.
  • Debe de consistir en una cadena continua de caracteres. Por ejemplo no puedo emplear como nombre «mi variable» pero sí «mi_variable».

En VBA existen los siguientes tipos de variables, dependiendo del uso que vayamos darles:

Para establecer la declaración de una variable antes de ser utilizada en el código, se puede hacer en la ficha entorno del cuadro de diálogo opciones. Al activar la casilla Declaración de las variables requerida, Visual Basic introduce la instrucción Option Explicit en la sección de declaraciones de cada módulo nuevo que se cree, no de los ya existentes donde hay que introducirlos manualmente. Esta instrucción obliga a declarar las variables antes de utilizarlas, lo que es muy recomendable.

La forma de declara una variable es a través de la instrucción Dim. En la línea se declara la variable de nombre Variable y al mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla.

Veamos un ejemplo del uso de variables. Usaremos para el siguiente ejemplo un InputBox y un MsgBox , la primera son esas cajas de texto que nos permite introducir la información requerida por teclado. Más adelante veremos con más detalle su uso, por el momento analice el empleo de la misma en nuestro ejemplo:

Sub ejemplo()
Dim strNombre As String
strNombre = InputBox(«¿Cómo te llamas?», «Saludos»)
MsgBox («Hola » & strNombre)

End Sub

A continuación insertaremos el siguiente módulo, para analizar el uso correcto de variables:

Sub ejemplo2()
Dim numero1, numero2, producto As Integer
Dim respuesta As String
numero1 = InputBox(«Introduzca el primer número», «PRODUCTO»)
numero2 = InputBox(«Introduzca el segundo número», «PRODUCTO»)
producto = numero1 * numero2

respuesta = MsgBox(numero1 & » X » & numero2 & «=» & producto)

End Sub

Si introduce cualquier número entero le dará un resultado correcto, pero pruebe a introducir una letra,  un número decimal o deje sin introducir un número. Observará que arroja un error. Esto es así porque hemos declarado variables de tipo entero, por tanto la variable  resultado no espera que se introduzca letras o campos vacíos. Analizaremos más adelante como depurar el código para que sólo se introduzca números o no se dejase la caja de texto vacía.

Las constantes almacenan valores que, como su nombre indica, permanecen constantes durante la ejecución de una aplicación.

La instrucción Const se utiliza para declarar una constante y establecer su valor. Al declarar una constante, puede asignar un nombre significativo a un valor. Una vez que se declara una constante, no se puede modificar ni se le puede asignar un nuevo valor.