¿Grabadora de Macros o VBA? Cuál es mejor para tus formularios

¿Sabías que puedes dar de alta valores en Excel con un formulario de captura sin necesidad de ser experto en programación? Existe un método rápido que no requiere escribir ni una línea de código — y otro método que te da control total sobre el proceso. En este tutorial aprenderás ambos: el método novato con la Grabadora de Macros y el método profesional escribiendo código VBA desde cero. Al final sabrás exactamente cuándo usar cada uno.

Formulario de Captura en Excel: Grabadora de Macros vs. Código VBA Profesional

Suscríbete para más tutoriales

🎁 Descarga el archivo de ejemplo

Escribe tu correo electrónico para recibir gratis el archivo para practicar.

¿Qué vamos a construir?

Un formulario de captura de ventas con los siguientes campos:

  • Fecha
  • Vendedor
  • Producto (lista desplegable)
  • Nombre del producto (automático con BUSCARX)
  • Precio (automático con BUSCARX)
  • Cantidad
  • Total (Precio × Cantidad)

Los datos capturados se darán de alta en una tabla de Excel llamada tblVentas.


Paso 1 — Configurar el formulario

Antes de grabar cualquier macro, el formulario necesita estar bien configurado.

Lista desplegable para Producto

En la celda de Producto, ve a Datos → Validación de datos. En Permitir elige Lista y en Origen usa la función INDIRECTO apuntando a la tabla de productos:

=INDIRECTO("tblProductos[ID]")

Esto despliega los IDs de producto desde la tabla tblProductos.

Nombre y Precio automáticos con BUSCARX

Una vez elegido el ID del producto, el Nombre y el Precio se traen automáticamente:

=BUSCARX(C6, tblProductos[ID], tblProductos[Nombre], "ID no válido")
=BUSCARX(C6, tblProductos[ID], tblProductos[Precio], "ID no válido")

Total automático

=C8*C9

Con esto el formulario ya calcula el total multiplicando Precio por Cantidad.


Método 1 — Usando la Grabadora de Macros (modo novato)

La Grabadora de Macros registra literalmente cada clic y movimiento que haces en Excel.

Cómo activar la ficha Programador

Ve a Archivo → Opciones → Personalizar cinta de opciones y activa la ficha Programador.

Grabar la macro

  1. Ve a Programador → Grabar Macro
  2. Ponle un nombre, por ejemplo Alta
  3. Guárdala en Este libro
  4. Haz clic en Aceptar — a partir de aquí todo lo que hagas queda grabado

Los pasos grabados

  • Selecciona el rango del formulario (fecha, vendedor, producto, nombre, precio, cantidad, total)
  • Cópialos con Ctrl + C
  • Ve a la hoja de destino
  • Activa Referencias Relativas (importante para que no se pegue siempre en la misma celda)
  • Usa Ctrl + Flecha abajo para ir al final de los datos
  • Baja una fila más
  • Haz clic derecho → Pegado especial → Valores → Transponer
  • Regresa a la hoja de captura
  • Detén la grabación en Programador → Detener grabación

¿Qué limitaciones tiene?

La macro grabada repite exactamente lo que hiciste. Si cambias el rango, si mueves celdas o si el usuario no llena todos los campos, la macro lo ignora y ejecuta igual. No toma decisiones — solo repite.


Método 2 — Escribiendo el código VBA (modo profesional)

Cuando escribes tu propia macro, tú controlas el flujo: qué hacer, cuándo hacerlo y si hacerlo o no.

La macro completa

Sub AltaEnTabla()

Dim HojaCaptura As Worksheet
Dim HojaDatos As Worksheet
Dim Tabla As ListObject
Dim NuevaFila As ListRow
Dim Cantidad As Integer
Dim Pregunta As Byte

Set HojaCaptura = ThisWorkbook.Worksheets("Captura")
Set HojaDatos = ThisWorkbook.Worksheets("_Datos2")
Set Tabla = HojaDatos.ListObjects("tblVentas")

'Validar cantidad de celdas

Cantidad = Application.WorksheetFunction.CountA(HojaCaptura.Range("C4:C10"))

If Cantidad < 7 Then MsgBox "Faltan datos en el formulario", vbExclamation: Exit Sub

Set NuevaFila = Tabla.ListRows.Add

With NuevaFila
    .Range(1) = Date
    .Range(2) = HojaCaptura.Range("C5").Value
    .Range(3) = HojaCaptura.Range("C6").Value
    .Range(4) = HojaCaptura.Range("C7").Value
    .Range(5) = HojaCaptura.Range("C8").Value
    .Range(6) = HojaCaptura.Range("C9").Value
    .Range(6) = HojaCaptura.Range("C9").Value
End With

MsgBox "Se guardaron los datos en Tabla", vbInformation

Pregunta = MsgBox("Deseas borrar datos del formulario?", vbYesNo + vbQuestion)

If Pregunta = vbNo Then Exit Sub

HojaCaptura.Range("C5,C6,C9").ClearContents

End Sub

¿Qué hace diferente esta macro?

CaracterísticaGrabadoraMacro escrita
Referencia a tabla por nombre
Validación de campos vacíos
Pregunta antes de borrar datos
Funciona aunque muevas la tabla
Controla el flujo con condiciones

Asignar la macro a un botón

  1. Ve a Insertar → Formas y dibuja un rectángulo redondeado
  2. Escríbele “Guardar en tabla”
  3. Clic derecho → Asignar macro → selecciona AltaEnTabla

Conclusión

La Grabadora de Macros es útil cuando no tienes experiencia en VBA y necesitas automatizar algo rápido. Pero tiene un techo muy bajo — repite sin pensar.

Cuando escribes tu propia macro en VBA, tú decides el flujo: validas datos, preguntas al usuario, referencias tablas por nombre y controlas cada paso del proceso. Esa es la diferencia entre el modo novato y el modo profesional.


¿Quieres aprender VBA desde cero?

En Deztaca Experience tienes acceso al curso completo de Fundamentos de Excel VBA y Macros, donde aprendes a escribir macros profesionales paso a paso, con ejercicios prácticos y casos reales.

👉 Conoce Deztaca.com

Más de 20 cursos disponibles en Excel, Power BI, automatización y análisis de datos. Empieza hoy.


Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top