La parte medular para una programación de Macros es entender los tres conceptos del encabezado.
Vamos a suponer que día a día los gerentes de zona deben de capturar las ventas de sus tiendas. Como somos muy exigentes les vamos a preguntar las razones que ellos consideren por las cuales consiguieron ese número siempre que sus ventas están por debajo de 3,000 (malo) o por encima de 6,000 (bueno).
Según el texto de arriba, podemos considerar que tenemos:
- Una variable llamada “venta del día” que cambiara diariamente según pasen los días.
- Una variable llamada “tienda” que tendrá que avanzar sola según el número de tiendas que revisa cada zonal.
- Una condición numérica para comprobar el valor de la venta del día.
VBA tiene algunas declaraciones que necesitamos aprender con las cuales le podremos decir que tenemos algunas variables para que el las guarde en su memoria y las use a lo largo de la programación.
- Dim algunNumero as Integer
- Dim numeroLargo as Double
- Dim algúnTexto as String
- Dim unaCondicion as Boolean
- Dim celdas as Range
- Dim unaGrafica as Chart
- Dim miLista(1 to 10) as String
- Dim otraLista() as Variant
Dim significa declarar una variable, el siguiente texto será el nombre de nuestra variable y la última parte (as loquesea) será el tipo de variable que utilizaremos (números, texto, celdas, etc…).
- Dim numero as Integer: nos dejara depositar en la variable un número real, lo que significa que podremos usar el nombre para hacer cálculos y funciones que dependan de números. La única limitante de Integer es que tiene un rango de memoria de -32,768 a 32,768, por lo que si quieres usar un número mayor podrás utilizar los nombres Double o Long
- Dim miLista(1 to 10) as String: creara una lista de valores del tipo texto con 10 variables distintas las cuales podremos arraigar dentro de una misma. Para usar cualquier valor de la lista bastara con hacer el llamado de la siguiente forma: miLista(2) (traerá el segundo valor de la lista).
¿Cómo usamos estas variables?
Una vez que declares las variables (declarar es utilizar Dim algo as loquesea) podras usarlas dentro de tu código de varias formas. Aquí algunos ejemplos.
- algunNumero = 2 : Guardara un numero 2 en la variable algunNumero.
- algunTexto = “Hey” : Guardara la palabra Hey en la variable algunTexto
- algunNumero = algunNumero + 2 : incrementara el valor de la variable algunNumero +2
- miLista(2) = 200 : guardara un numero 200 en la posición 2 de tu lista
- Activecell.Value = algunNumero : Depositara en la celda activa el valor de la variable algunNumero
- algunNumero = Activecell.Value : Guardara el valor de la celda seleccionada en la variable algunNumero.
¿Cómo usar las condiciones?
Como para el ejemplo de arriba tenemos que revisar si el valor de la venta es <3,000 o >6,000 tendremos que utilizar las funciones IF THEN ELSE para hacer pruebas lógicas basadas en nuestras opciones. Al igual que dentro de la hoja de cálculo, podremos utilizar tantos IF THEN ELSE como sea necesario uno dentro de otro.
If ventas <3000 or ventas >6000 then
‘la instrucción comprobara si nuestras ventas son muy grandes o muy chicas para nuestros criterios
Else
‘ Si las ventas están entre esos dos rangos hará esto
End if
¿Cómo se usan los Loops?
Un Loop es una instrucción en Excel que nos ayudara a realizar una operación tantas veces como sea necesario, para nuestro ejemplo supongamos que cada gerente regional tiene 10 tiendas por lo que deberemos programar para que el evento de ingresar ventas y comprobar si son mayores y menores deberá realizarse 10 veces.
Ciclos For
For numerodetiendas = 1 to 10
‘1. Va a buscar una tienda
‘2. Pregunta el valor de las ventas
‘3. Preguntara porque tan bajo o algo según sea necesario
‘4. Espera
Next numerodetiendas
Esto hará que nuestro evento se repita 10 veces, una para cada tienda, y repetirá los pasos 1,2,3 y 4 cada vez.
Sentencia FOR EACH para Loop
FOR EACH es otro tipo de Loop para repetir la misma instrucción por cada valor de una lista.
For Each cell in Range(A1:A11)
Cell.value = cell.value +1
Next cell
Lo que hará será incrementar el valor de la celda +1 en el rango A1:A11.
¿Y el caso ‘apa?
Bueno, vamos a juntar todo lo que aprendimos arriba para resolverlo.
Sub Comprobar_Ventas()
‘ Esta macro sirve para comprobar porque las tiendas no estan vendiendo
‘ La macro se activa al presionar el boton y los valores se capturan en las ventanas emergentes
Dim tiendas As Range
Dim menor As String
Dim numerodetienda As Integer
numerodetienda = 1
For Each tiendas In Range(«B3:B12»)
tiendas.Value = InputBox(«Capture las ventas de tienda » & numerodetienda)
If tiendas.Value < 3000 Or tiendas.Value > 6000 Then
menor = InputBox(«¿explicacion?»)
tiendas.Offset(0, 1).Value = menor
End If
numerodetienda = numerodetienda + 1
Next tiendas
End Sub
¡Y es así como se usan las funciones principales de una macro! podríamos agregar una validación para el cuadro de texto cambiara según la comprobación sea mayor o menor, podríamos crear más rangos y más tiendas, podríamos agregar más columnas… ¡Podemos hacer lo que queramos! Checa la macro aquí y has tus propias pruebas.
¡Estás listo para ser un Excel CUTE! Si tienes alguna duda o se te ocurren más funciones compártelo con todos en los comentarios.