Consultoría y Capacitación | JavierBaz | Instructor de Excel
🟠 Macros y VBA · Clase 3 · gratis

Variables, bucles y condiciones

Guardar un dato, repetir algo mil veces y decidir según lo que encuentre. Con estas tres piezas tu macro deja de repetir pasos grabados y empieza a trabajar con criterio.

La grabadora repite; el código que ya sabés leer, también. Lo que ninguno hace todavía es adaptarse: revisar cada fila de una lista que un mes tiene 50 filas y otro 500, y actuar distinto según lo que encuentre. Para eso existen las tres piezas de toda automatización — en VBA y en cualquier lenguaje del mundo: variables, bucles y condiciones.

01La idea en una frase

Una variable es una caja con nombre donde guardás un dato (Dim total). Un bucle repite un bloque de código muchas veces (For ... Next). Una condición decide si algo se hace o no (If ... Then). Combinadas: "recorré todas las filas y, si el importe es alto, marcalo".

La pieza que une todo: Cells(fila, columna) — la celda escrita con números: Cells(2, 3) es C2. Como la fila puede ser una variable, el bucle puede visitar Cells(i, 3) con i = 2, 3, 4… y así recorrer la planilla entera, tenga las filas que tenga.

02El ejemplo: marcar los gastos altos, solo

Tu planilla de gastos de siempre: categoría en B, importe en C. Querés que la macro recorra las filas 2 a 5 y escriba "Revisar" al lado de todo gasto mayor a 1000:

Sub MarcarGastosAltos()
    Dim i As Long
    For i = 2 To 5
        If Cells(i, 3).Value > 1000 Then
            Cells(i, 4).Value = "Revisar"
        End If
    Next i
End Sub

El resultado en la hoja:

Leelo en voz alta y verás que es casi castellano: "para i de 2 a 5: si la celda de la columna 3 es mayor a 1000, escribí Revisar en la columna 4". Eso mismo con 5.000 filas tarda un parpadeo — y es imposible de grabar con la grabadora, porque la grabadora no decide.

03Cómo lo hacés vos

⚠️ Cuándo NO funciona (y cómo salir)
  • "For sin Next" (error de compilación): todo For necesita su Next, y todo If de varias líneas su End If. Si anidás, cada uno cierra el suyo.
  • El bucle pisa el encabezado: arrancaste en i = 1. Los datos suelen empezar en la fila 2.
  • Comparás texto y no coincide: "Transporte" y "transporte " (con espacio) no son iguales para VBA. Limpiá con Trim() y unificá mayúsculas con LCase().
  • Errores de tipeo silenciosos en variables: escribí Option Explicit en la primera línea del módulo — obliga a declarar todas las variables y te avisa si escribiste totla en vez de total.
  • Quedó en bucle infinito: Esc o Ctrl+Pausa lo frena (pasa con Do While mal armados; con For ... To es raro).

🎯 Tu reto

Escribí MarcarGastosAltos sobre tu planilla de gastos y hacelo andar. Después el upgrade real: reemplazá el 5 por Cells(Rows.Count, 3).End(xlUp).Row, agregale 10 filas de datos y ejecutá de nuevo — tiene que marcar hasta la última sin que toques el código. Extra: sumale un Else que escriba "OK" en los gastos normales.

Mandame la captura por WhatsApp con el código y el resultado — el "hasta la última fila" es el patrón que vas a usar toda la vida, vale la pena dejarlo perfecto.

04Adónde sigue esto

Ya tenés todas las piezas: grabar, leer código, y ahora decidir y repetir. La próxima clase las junta en el proyecto que justifica el nivel entero: automatizar tu reporte completo — de la exportación cruda al informe terminado, con una sola macro. Es la Clase 4.

Las tres piezas son simples. Combinarlas para TU proceso es el salto.

Entre el ejemplo de juguete y la macro que resuelve tu caso real hay un par de trampas que se destraban en minutos con alguien al lado. Clases particulares con acompañamiento, sobre tus archivos: online por Zoom o presencial en Montevideo.

💬 Quiero que me acompañes