Variables en VBA
Cuando programamos en VBA frecuentemente necesitamos un repositorio para almacenar el resultado de alguna operación.
Las variables en VBA son utilizadas para guardar valores y su tipo dependerá de la clase de dato que deseamos guardar dentro de ellas.
En VBA existen variables de tipo entero que almacenan números, variables de tipo doble que también almacenan números pero con decimales, variables de tipo texto para guardar una cadena de caracteres entre algunos otros tipos de variables. A continuación haremos una revisión de cada uno de estos tipos.
Variables de tipo entero
Las variables de tipo entero son utilizadas para guardar números enteros. Debemos utilizar la palabra clave Integer para declarar una variable de este tipo.
Dim x As Integer x = 6
En la primera instrucción estoy declarando la variable con el nombre
“x” y estoy indicando que será del tipo Integer. “Declarar una variable”
significa avisar a Excel sobre la existencia de dicho repositorio para guardar información. En la segunda instrucción asigno el valor 6 a la variable “x”.
Variables de tipo doble
Las variables de tipo doble pueden almacenar números con el doble de precisión incluyendo números decimales. La palabra clave para este tipo de variables es Double.
Dim x As Double x = 3.1416
Aunque las variables de tipo doble pueden almacenar números
enteros sin problema, no es recomendable hacerlo porque estaremos desperdiciando espacio en la memoria del ordenador. Es decir, el tamaño reservado para una variable doble es el adecuado para guardar números decimales, si solo guardamos un número entero
quedará especio sin utilizar. Por lo tanto es recomendable utilizar siempre el tipo de variable adecuado para cualquier número.
Variables de tipo texto
Una variable de tipo texto se declara con la palabra clave String. En el siguiente código declararé la variable libro y posteriormente le
asignaré un valor.
Dim libro As String
libro = "Programación en Excel"
Variables de tipo lógico
Una variable de tipo lógico es aquella que puede almacenar solamente dos valores: falso o verdadero. La palabra clave para definir estas variables es Boolean.
Dim continuar As Boolean continuar = True
La primera línea declara la variable “booleana” y en la segunda le asignamos un valor. Solamente podemos asignar dos valores a este tipo de variables: True (verdadero) y False (falso).
Estos son los tipos de variables básicos en VBA. Existen algunos más que iré tratando en artículo posteriores. Mientras tanto es
indispensable que aprendas a declarar adecuadamente las variables en VBA porque será inevitable hacer uso de ellas dentro de nuestros programas.
Cadenas de texto en VBA
Existen varias funciones en VBA que podemos utilizar para manipular cadenas de texto. A continuación revisaremos algunas de estas
funciones VBA y observaremos el resultados de cada una de ellas.
Para iniciar con esta revisión, debes colocar un botón de comando dentro de una hoja de Excel y después hacer doble clic sobre él para introducir el código.
Unir cadenas de texto
Para unir dos (o más) cadenas de texto podemos utilizar el operador
&. Observa el siguiente código:
El resultado de este código es el siguiente:
La función Left
La función Left en VBA nos ayuda a extraer un número determinado de caracteres a la izquierda de la cadena de texto.
En el código he especificado los 7 caracteres a la izquierda de la cadena de texto. El resultado es el siguiente:
La declaración If-Then en VBA
En ocasiones necesitamos ejecutar algunas líneas de código de
nuestra macro solamente cuando alguna condición se haya cumplido.
La declaración If-Then nos permite validar una condición para tomar una decisión adecuada.
La sentencia If-Then en VBA es la más básica de todas las
declaraciones de control de flujo que son aquellas declaraciones que nos permiten tomar decisiones en base a una condición. Esta
declaración la podemos traducir como Si-Entonces y la utilizaremos en situaciones donde necesitamos realizar la siguiente evaluación: Si se cumple la condición Entonces haz esto.
Acceder celdas con VBA
Existe un par de maneras para acceder las celdas de nuestras hojas utilizando VBA. Podemos utilizar el objeto Range y también podemos utilizar el objeto Cells. A continuación revisaremos ambos objetos.
Seleccionar una celda
Si deseamos seleccionar la celda B5 podemos utilizar cualquiera de las dos instrucciones siguientes:
Range("B5").Select
Seleccionar un rango
Para seleccionar un rango de celdas lo más conveniente es utilizar el objeto Range de la siguiente manera:
Range("A1:D5").Select
El objeto Cells no nos permite seleccionar un rango porque solamente podemos especificar una celda a la vez.
Establecer el valor de una celda
Para establecer el valor de una celda podemos utilizar alguna de las siguientes instrucciones:
Range("B5").Value = 500
La instrucción For-Next
El bucle For-Next es una de las instrucciones más útiles al programar en VBA. La sintaxis de esta instrucción es la siguiente:
For inicialización de variable To límite
{Conjunto de instrucciones que se repetirán}
Next incrementar variable
• Inicialización de variable: Ya que la instrucción For Next repite un conjunto de instrucciones un número de veces específico, debemos inicializar una variable que irá contando cada una de las repeticiones. Es común encontrar la instrucción escrita
como For i = 1 lo cual indica que la variable i llevará la cuenta de las repeticiones que deseamos que inicien en 1.
• Límite: Además de inicializar la variable que llevará la cuenta de las repeticiones, debemos especificar un límite donde se
detendrá el ciclo. Este límite es indicado con la instrucción To.
De esta manera, si deseamos hacer un bucle que vaya desde 1 hasta 5 la instrucción la escribiremos como For i = 1 To 5.
• Incrementar variable: El final del conjunto de instrucciones se indica con la instrucción Next y que va seguida del nombre de la variable que lleva la cuenta para incrementar su valor en uno.
Así podemos terminar el bucle con la instrucción Next i.
Ejemplo de un bucle For-Next
A continuación un ejemplo muy sencillo de un bucle For-Next donde la única instrucción que se repite es la de mostrar una ventana de diálogo con el valor de la variable i:
Operadores lógicos en VBA
Los operadores lógicos más comunes en VBA son: And y Or. Cada uno de estos operadores es de mucha utilidad para evaluar
condiciones y tomar decisiones adecuadas sobre el código que será ejecutado.
El operador lógico And
El operador lógico And es el operador que nos ayuda a forzar el cumplimiento de dos condiciones. Este operador lo traducimos como
“Y” de manera que para ejecutar un bloque de código se debe cumplir la condición1 Y la condición2.
El operador lógico Or
El operador lógico Or lo traducimos como “O” y nos permitirá saber si al menos una de las condiciones se cumple, es decir, si la condición1 O la condición2 se cumplen.
Arreglos en VBA
Los arreglos en VBA pueden ser entendidos como un grupo de variables contenidas dentro de otro repositorio. Dentro de un arreglo podemos referirnos a un valor específico (elemento) utilizando su posición (índice).
Para comprender mejor lo que es un arreglo observa la siguiente imagen:
Un arreglo es una colección de “casillas” que contendrán variables individuales. Casa casilla tendrá un número de índice el cual nos permitirá asignar u obtener el valor que contiene.
Crear un arreglo en VBA
Para crear un arreglo en VBA utilizamos la siguiente instrucción:
Dim Paises(1 To 5) As String
Con este código estamos creando el arreglo llamado Paises que tendrá 5 elementos y estamos indicando que cada uno de los elementos será del tipo String, es decir, cadenas de texto. Una vez que ha sido creado el arreglo podemos asignar sus valores de la siguiente manera.
Paises(1) = "Argentina"
Paises(2) = "Colombia"
Paises(3) = "España"
Paises(4) = "México"
Paises(5) = "Perú"
Acceder un elemento del arreglo
Para acceder cualquier elemento del arreglo simplemente colocamos el nombre del arreglo seguido por paréntesis y el número de índice del elemento que necesitamos. Por ejemplo, para desplegar un mensaje con el nombre de país España puedo utilizar la siguiente instrucción:
MsgBox Paises(3)
El resultado de esta instrucción será el siguiente: