VARIABLES
VARIABLES
VARIABLES
Dónde
utilizarlas
Además de definir el tipo de dato que contendrá una variable a la hora de declararla,
también puedes establecer dónde cumplirá su función, es decir, en qué parte del proyecto es
posible utilizarla. Esto es el ámbito de una variable.
La diferencia entre los dos se encuentra cada vez que se ejecutan. Cuando se ejecuta el
procedimiento ejemplo_1, mostrará el valor 1 todas las veces que lo hagas, ya que la
variable x se reinicia a 0 cada vez que finaliza el código. En cambio, cada vez que ejecutas
ejemplo_2, el valor de x se incrementará en 1, dado que la variable conserva su valor al
finalizar el código.
Resumiendo…
Aunque no es necesario declarar las variables en Excel, te aconsejo que lo hagas siempre
para evitar estar buscado los posibles errores que obtengas.
Antes de declarar una variable debes pensar dónde y en qué situación vas a hacer uso de
ella, de forma que evites modificaciones inesperadas y accesos no autorizados.
BA: Variables Dim, Public, Private y Static
En definitiva hablaremos hoy del ámbito de las variables, es decir, dónde aplican nuestras variables una vez
definidas. Es importante saber que el ámbito de una variable se determina en el momento en que se declara la
variable.
En VBA para Excel, los tres ámbitos existentes para las variables son: Públicas, Módulo y Procedimiento.
Comenzamos por el más habitual el ámbito de Procedimiento, es decir, la variable así definida se reconoce
únicamente dentro del procedimiento en el que la declaramos.
Podremos declarar una variable local de procedimiento con una instrucción Dim o Static.
Cuando definimos o declaramos una variable local con la instrucción Dim, la variable permanece en
memoria sólo mientras se ejecuta el procedimiento en el que la hemos declarado, y por tanto, normalmente,
cuando termina el procedimiento de ejecución, no se conservan los valores de las variables locales del
procedimiento y se libera la memoria asignada a esas variables. La próxima vez que se ejecute el
procedimiento, se reinicializarán todas las variables locales declaradas.
Muy importante!!: Cada variable X es independiente del otro procedimiento, sólo se reconoce la variable
dentro de su propio procedimiento respectivo (Local1 ó Local2).
La otra forma de definir una variable local de Procedimiento es declarar la variable como Static. Una
variable local declarada con la instrucción Static sigue existiendo todo el tiempo que se ejecuta en Visual
Basic. La variable se restablece cuando se produzca cualquiera de las siguientes acciones:
- La macro genera un error de tiempo de ejecución no interceptado.
- VBA se detiene.
- Salimos de Excel.
- Cambiamos el módulo.
Muy Importante!!: En nuestro procedimiento Estatica, la variable 'Acum' conserva su valor cada vez que se
ejecuta. Por ejemplo, la primera vez que se ejecuta el módulo, introducimos en el cuadro el valor 10, el
MsgBox mostrará el valor 10 (lógicamente)... si la siguiente vez que se ejecuta el módulo, introducimos el
valor 20, el MsgBox mostrará el valor de 30 (10+20...) !!.
Una variable que es reconocida en todos los procedimientos en un módulo se denomina una variable de
Módulo. Una variable de nivel de módulo está disponible para todos los procedimientos de ese mismo
módulo, pero no está disponible para los procedimientos de otros módulos.
Mientras VBA se ejecuta, hasta que se modifique el módulo en el que se declara, una variable de módulo
sigue existiendo.
Se pueden declarar variables de ámbito de módulo con una instrucción Dim o Private en la parte superior del
módulo, encima de la primera definición de procedimiento.
En el ámbito de módulo, no hay ninguna diferencia entre Dim y Private... pero debemos tener en cuenta
que no se pueden declarar variables de ámbito de módulo dentro de un Procedimiento.
En general, una recomendación, si utilizamos Private en lugar de Dim para las variables de ámbito módulo, el
código será más fácil de leer esto es, si utilizamos Dim solamente para variables locales de procedimiento y
Private para las variables de módulo, el ámbito de una variable determinada será más claro.
Un ejemplo de variable de módulo:
En un módulo cualquiera de nuestro proyecto de VBA insertamos los siguientes procedimientos:
¡Muy importante!!!: En el ejemplo siguiente, hemos comenzado declarando dos variables A y B, de ámbito de
módulo (¡¡antes de todos los procedimientos!!), por tanto, estarán disponibles para cualquiera de los
procedimientos de dicho módulo. La tercera variable C, que se declara en la macro de Procedimienti3, es una
variable local y sólo está disponible para ese procedimiento.
Tengamos en cuenta que en Procedimiento4, cuando la macro intenta utilizar la variable C, el tercer MagBox
está vacío porque C es una variable local y no está disponible en Procedimiento4, mientras que las variables A
y B si lo están al tener como ámbito todo el módulo.
Finalizaremos con las variables Públicas (recordemos que eran tres los ámbitos).
Las variables públicas - Public - tienen el ámbito más amplio de todas las variables. Una variable pública es
reconocida por todos los módulos del libro de trabajo activo.
Una variable pública se declara igual que una variable de ámbito de módulo, es decir, en la parte superior del
módulo, encima de la primera definición de procedimiento. NO se puede declarar una variable pública dentro
de un procedimiento. Siempre se declara una variable pública con una instrucción Public (podremos declarar
una variable pública en cualquier módulo).
Atención por que es posible que varios módulos tengan variables públicas con el mismo nombre !!!, por tanto,
para evitar confusiones y posibles errores, una buena práctica sería utilizar nombres únicos.
Un ejemplo de variable PUBLIC:
Importante!!: Las tres variables Public sirven para cualquier módulo dentro del libro, mientras que la cuarta
(Pirvate factor) únicamente serviría dentro de este módulo.
Variables
Variable: Definición
En informática Variable se define como un nombre o una letra que sirve para almacenar
datos; Los cuales pueden ser valores numéricos o palabras, como por ejemplo los nombres
y apellidos de una persona.
Como su nombre lo indica, las Variables pueden contener datos que cambian o varían con
el tiempo.
Por ejemplo, una Variable llamada Nombre puede contener en un momento el nombre
Brenda, en otro momento Marlen, Digna, Marcela y así sucesivamente. Es decir el dato
en la variable Nombre varía con el tiempo.
Otro ejemplo puede ser una Variable llamada Tiempo en la cual cada día se almacena la
temperatura de ese día, obviamente el dato almacenado será diferente cada día, es decir
serán variables.
Creando Variables.
Para que una variable cumpla sus funciones, es necesario, que se sigan los siguientes pasos:
Recuerde que en una sección anterior de este libro se le explicó como configurar el IDE de
Visual Basic para que en la configuración del programa, quedara Option Éxplicit en On,
para que al momento de desarrollar un proyecto, el programa no lo deje continuar si no
ha declarado la variable. Esto tiene importancia al momento de trabajar con variables
porque si intentamos utilizar una variable sin declararla entonces nos generará error.
La palabra As es reservada de Visual Basic y sirve para decir que típo de variable será.
El nombre de una variable debería dar una idea del para que sirve, por ejemplo, si en una
variable vamos a guardar modelos de carros entonces el nombre de la variable podría ser
ModelCar.
Tipos De Variables:
El tipo de variable que se declara depende de que datos se almacenen en esa variable. Por
ejemplo si en la variable vamos a almacenar números enteros entonces el tipo será Integer,
si se almacenarán palabras (texto) entonces el tipo será String, si se almacenarán fechas u
horas entonces el tipo será Date.
A continuación se muestra una tabla con la relación entre el tipo de datos que almacena una
variable, según el tipo y el tamaño de la variable. Esto último tiene importancia por que hay
tipos de variables que ocupan mas espacio en la memoria.
Como puede ver en el cuadro anterior se presentan 16 tipos de variables las cuales se usarán
de acuerdo al tipo de programa que se está desarrollando.
Asignando la Variable.
En este paso de la creación de una variable se le asigna el dato o valor que almacenará.
Para asignarle un valor, se utiliza el signo igual “= “y se puede hacer en la misma línea de
la declaración del nombre y el tipo, o en una línea diferente.
En este ejemplo se hizo la asignación de la variable en una línea diferente, pero puede
hacerse en una misma línea.
Label1.Text = PrimerHija
Observe que en este caso se Declaró la variable en una línea y se Asignó el valor en otra.
Label1.Text = ""
Con este código le está diciendo al programa que al dar clic en el botón 3 se borre el texto
que está en el Label1.
• Ejecute el programa.
Una vez se ha declarado una variable asignándole un nombre y definiendo el tipo, debe
utilizarse para que tenga sentido su declaración.
Imagínese que se jugará la final del Mundial 2014, usted no puede ir al estadio y quiere
ver el partido; pero no quiere verlo solo;porque quiere gente llena de emoción que lo
acompañen a ver el partido de football.
Usted adquirió un televisor pantalla grande para tal fin… ¡Ver la final del mundial
2014!
Si coloca ese televisor en su habitación personal solo usted podrá ver el partido por que
es un lugar solo para usted.
Si coloca el televisor en la sala de la casa todos los que viven o están en la casa podrán ver
el partido; Porque la sala de la casa es un lugar de acceso y reunión para todos los que
llegan, viven o están en la casa.
Pero usted quiere que todas las personas que deseenpuedan ver la final del mundial 2014 en
su televisor, entonces decide colocar el televisor en un lugar público y elige el parque más
cercano a su casa.
Haciendo una analogía con el ámbito de las variables entonces su habitación seria el
Procedimiento, la sala de la casa sería el Módulo y el parque sería el ámbito Público.
En el primero se tiene acceso limitado por que solo se accede al televisor o a la variable
dentro de la habitación que sería como él (procedimiento); En el segundo, que es la sala
(módulo) se tiene acceso desde todos los procedimientos (todas las habitaciones y la cocina
de la casa) y en el tercero que es un ámbito Público o global (El parque) todos tienen
acceso, es decir, desde todos los módulos y procedimientos.
Abra Visual Basic 2010 para iniciar un proyecto nuevo y asígnele el nombre Variables
Ejemplo 2010 y luego en el formulario agregue 4 controles Botón y 4 labels, como se ve a
continuación:
Como usted ve; son ocho controles que después de configurar sus propiedades como se le
indican en el cuadro anterior, el formulario quedará así…
Ahora tiene que escribir código para cada botón, para esto, dé doble clic en el botón
Variable String y verá que el programa ya le ha ayudado a escribir código para ahorrarle
tiempo y horas de trabajo, haciendo que usted sea más productivo en menos tiempo.
Nombre = "Brenda"
LblString.Text = Nombre
El Label o etiqueta de este ejemplo se llama LblString, pero pudo haberse llamado de
otra manera, Por que eso depende del programador o programadora. El nombre debe
empezar con letra mayúscula y si está formada por dos palabras la primera letra de cada
palabra, debe ir en mayúscula. Lo ideal es que el nombre esté relacionado con su uso.
En este caso se llama LblString, por que convencionalmente, en programación, el Label
se abrevia Lbly la palabra String, es por que se usará para almacenar una variable de
tipo texto; pero pudo llamado LblTexto, LabelString, LabelTexto, etc.
Observe que la palabra Brenda aparece entre comillas para que Visual Basic la intérprete
literalmente, es decir tal y como está escrito. Si no pone el texto entre comillas le aparecerá
subrayado como error.
Sea acucioso y observe que en las tres líneas de código anteriores se siguieron todos los
pasos para las variables, se declaró el nombre y tipo de variable, se le asignó un valor y
luego se utilizó mostrando el valor almacenado en la variable, en un control label.
Los principios del código para los botones 2,3 y 4 son los mismos que el botón uno. En
todos se declara, asigna valor y se utiliza la variable que en cada caso es diferente.
Edad = 90
LblInteger.Text = Edad
Estatura = 1.6225
LblSingle.Text = Estatura
Resultado = True
LblBoolean.Text = Resultado
Al dar clic en cada uno de los botones se mostrará, en los labels, el valor almacenado en las
variables según el botón en que se dio clic.
Analice la imagen anterior y observe como una variable Integer almacena un número, una
String almacena texto, una boolean almacena un valor True o False (Verdadero o Falso)
y una variable Single almacena un valor no entero o con punto decimal.
Inhabilitando código.
Abajo de cada línea en verde escriba: MsgBox (Nombre), MsgBox (Edad), MsgBox
(Estatura) y MsgBox (Resultado) respectivamente.
Todas las líneas verdes están deshabilitadas, por lo que el programa no las toma en cuenta
y no las ejecuta.
Ahora presione F5 para ver el resultado del programa, y vea que sucede, al dar clic en cada
uno de los botones.
Una cosa interesante en este ejercicio es que si usted no inhabilita con la comilla simple la
línea del Lbl.Text y escribió la línea de MsgBox ( ) el programa le mostrará las dos
opciones; es decir, le mostrará el resultado en el Label y a continuación en el MsgBox
Pruebe esto quitando la comilla simple de la línea que dice Lbl.text =Nombre y de
Lbl.Text=Edad
Ninguna línea esta en color verde por lo tanto todas las instrucciones están habilitadas.
A propósito de la comilla simple para inhabilitar código, también de esta misma manera
se pueden escribir instrucciones o comentarios en el editor de códigos sin que tenga
influencia en la ejecución del programa.
Para concluir este ejercicio, si no había guardado el proyecto, hágalo ahora desde el menú
Archivo-------- >Guardar todo y luego puede cerrar el programa desde el
botón cancelar.
Variables constantes:
Muchas veces hay datos en una variable que son los mismos todo el tiempo. Por ejemplo, si
en un programa usamos la constante Pi (π) el valor siempre será 3.141592 por lo que se
denominan Variables constantes.
Cadenas:
Cadena se define como una serie de caracteres de texto como letras, números, espacios y
caracteres especiales por ejemplo símbolos de música, Pi, etc.
Nombre= “Luis”
Apellido =”Ayala”
Las comillas “” deben encerrar las cadenas o textos para que se vean literalmente o sea tal
y como están escritas.
Concatenación:
Concatenación es la unión de dos o más cadenas y se usa el signo Ampersand “& “para
representarlo.
Por ejemplo, si queremos unir las cadenas Nombre y Apellido debemos usar el signo de
concatenación ó ampersand.
Ejercicio: Concatenación.
Es importante que el label 1 sea el Nombre, label 2 el Apellido y el label 3 sea Nombre
Completo, por que si no es así, el código no funcionará.
Ahora dé doble clic en el button y escriba el siguiente código…
Nombre = TextBox1.Text
Apellido = TextBox2.Text
Label3.Text = NombreCompleto
Observe que la cadena del primer Textbox se unió a la cadena del segundo Texbox para
presentarnos el nombre y apellidos juntos…Pero hay un error que el autor de este libro (yo
por supuesto ¡ja, ja, ja!) dejó intencionalmente, para explicarle lo del uso del signo de
concatenación (&)
Observe que el nombre y apellido aparecen sin espacio por lo que se lee LuisAyala; Esto
es por que en la línea de código para unir las dos cadenas se usó el signo de suma (+) en
vez de (&) por lo que el programa se limita a unir los dos textos o cadenas, sin dejar
espacio.
Con solo cambiar el signo + por & verá que al ejecutar el programa nuevamente, se verá el
nombre y apellido con el espacio correspondiente.
Se pueden declarar varias variables en una sola línea, si son del mismo tipo; solo se escribe
el nombre de cada variable separado por comas, antes de decir que tipo es.
En el siguiente ejemplo el nombre de las variables N y A son del tipo String pueden ser
declaradas en la misma línea.
Dim N, A As String
N = "Luis" : A = "Ayala"
Y las instrucciones o líneas de códigos pueden hacerse también en la misma línea pero
separadas por dos puntos “ : ”
MsgBox(N): MsgBox(A)
Si quiere ver si funciona, debe crear un nuevo proyecto con el nombre que usted quiera y
agregue un botón al formulario
Inserte en el código del botón, la siguiente instrucción entre Private Sub Button1….y
End Sub.
Si bien es cierto, que esta forma de escribir código funciona bien, Le recomiendo que no la
use pues le quita claridad al código y puede facilitar la confusión