Escribir directo en la hoja es la forma más rápida de ensuciar una base de datos. Alguien pone «SONY», otro «Sony», otro «sony » con un espacio al final, y cuando quieres contar cuántos productos hay por marca te salen tres marcas donde había una. Un formulario resuelve eso: el usuario elige de una lista y no puede inventarse nada.
En este artículo montamos, paso a paso, un formulario en Excel para ingresar datos con VBA —lo que en Excel se llama un UserForm—: una ventana propia con dos listas enlazadas, de modo que al elegir un producto solo aparecen las marcas que le corresponden. Al final tienes el archivo para descargar y trastear.
Descarga el archivo terminado y ábrelo mientras lees
Formulario de registro de productos en Excel (plantilla gratis)
Qué es un formulario en Excel y cuándo compensa
Un formulario es una ventana con controles —listas desplegables, cajas de texto, botones— que recoge la información y la escribe en la hoja por ti. En Excel hay dos caminos, y conviene saber cuál te toca:
| Formulario nativo (sin macros) | UserForm de VBA | |
|---|---|---|
| Cómo se activa | Añadiendo el botón «Formulario» a la barra de acceso rápido | Programándolo en el editor de VBA |
| Listas desplegables | No, solo cajas de texto | Sí, y enlazadas entre sí |
| Aspecto | El que trae Excel, no se cambia | El que tú diseñes |
| Formato del archivo | .xlsx normal | .xlsm, y hay que habilitar macros |
| Para qué sirve | Capturar rápido cuatro campos sueltos | Cuando necesitas controlar qué se puede escribir |
Aquí vamos con el segundo, porque el caso lo pide: queremos que la lista de marcas dependa del producto elegido, y eso el formulario nativo no lo hace.
El caso: registro de productos por marca
El escenario es el de cualquier tienda o almacén pequeño: hay que ir registrando productos y su marca, y se quiere evitar que alguien escriba una marca que no corresponde a ese producto. Para eso el archivo tiene dos hojas:
- Hoja BD — el catálogo. En la columna A el producto y en la columna C la marca, una fila por cada pareja válida. De aquí se alimentan las dos listas del formulario.
- Hoja REGISTRO — el destino. Tres columnas: número, producto y marca. Aquí se va acumulando lo que capturas.

Paso 1: crear el UserForm en el editor de VBA
Pulsa Alt + F11 para abrir el editor de Visual Basic. Una vez dentro, menú Insertar → UserForm. También puedes hacer clic derecho sobre ThisWorkbook en el panel de la izquierda, y elegir insertar UserForm.
Aparece un lienzo gris y, al lado, el cuadro de herramientas con los controles que puedes arrastrar encima.

Paso 2: colocar los controles
Para este caso hacen falta cuatro cosas, y ni una más:
- Dos etiquetas (Label) para poner los rótulos «Producto» y «Marca».
- Dos cuadros combinados (ComboBox), que son las listas desplegables.
- Un botón de comando (CommandButton) para guardar.
Con cada control seleccionado, en la ventana de Propiedades cambia el campo Name. Los nombres importan: son los que vas a escribir después en el código. En este archivo el desplegable de marcas se llama cboMarca.

Paso 3: cargar la primera lista al abrir el formulario
Cuando el formulario se abre, hay que llenar la lista de productos con lo que haya en la hoja BD. Eso se hace en el evento UserForm_Initialize, que es el que Excel ejecuta automáticamente antes de mostrar la ventana.
La lógica es siempre la misma: se calcula cuál es la última fila con datos de la hoja BD, se recorre desde la primera hasta esa última, y por cada fila se añade el valor a la lista con AddItem.

El detalle que rompe esto: si dejas una fila vacía en medio de la hoja BD, el cálculo de la última fila se corta ahí y la lista sale incompleta. Los datos van seguidos, sin huecos.
Paso 4: la lista dependiente, que es el truco de todo esto
Aquí está la parte que hace útil el formulario. Cuando el usuario elige un producto, hay que vaciar la lista de marcas y volver a llenarla, pero solo con las marcas que aparecen en la misma fila que ese producto.
Se programa en el evento Change del primer desplegable, y el orden no es negociable:
- Primero vaciar la lista de marcas. Si no lo haces, las marcas se van acumulando cada vez que cambias de producto.
- Recorrer la hoja BD fila a fila.
- Comparar el producto de esa fila con el que el usuario ha elegido.
- Si coinciden, añadir la marca de esa misma fila a la segunda lista.


Paso 5: guardar en la hoja al pulsar el botón
El botón hace tres cosas: calcula la primera fila libre de la hoja REGISTRO, escribe ahí el número correlativo, el producto y la marca, y deja el formulario listo para el siguiente registro.
El número correlativo no se guarda en ningun sitio: se deduce contando cuántas filas hay escritas. Por eso, si borras una fila del medio, el siguiente número repetirá uno ya usado. Es el comportamiento normal de este tipo de ejercicios.


Paso 6: el botón que abre el formulario desde la hoja
Falta lo más fácil y lo que más se olvida: quien use el archivo no va a abrir el editor de VBA cada vez. Hay que dejarle un botón en la propia hoja.
Se hace desde la pestaña Programador → Insertar → Botón, se dibuja donde quieras y se le asigna la macro que muestra el formulario. Si no ves la pestaña Programador, se activa en Archivo → Opciones → Personalizar cinta de opciones.

Los cinco errores que te van a pasar
- Abrir el archivo y que no pase nada. Excel bloquea las macros por defecto. Hay que pulsar «Habilitar contenido» en la barra amarilla. Y si el archivo viene de internet, además puede hacer falta quitarle el bloqueo desde las propiedades del archivo.
- Guardarlo como .xlsx y perder todo. Un libro con macros solo se conserva en formato .xlsm. Al guardar como .xlsx, Excel elimina el código y con él el formulario entero.
- Renombrar las hojas. El código busca las hojas por su nombre exacto. Si cambias «BD» por «Base de datos», el formulario deja de encontrarla y da error.
- Olvidar vaciar la segunda lista. Es el fallo clásico de las listas dependientes: cambias de producto y las marcas del anterior siguen ahí, sumadas a las nuevas.
- Confundir el nombre del control. Si en el código escribes ComboBox2 pero al control lo llamaste cboMarca, Excel avisa de que no existe. El nombre del código y el de la propiedad Name tienen que ser el mismo.
Hasta dónde llega este formulario
Conviene decirlo claro, porque es un ejercicio para aprender y no un sistema de inventario: este formulario da de alta, y nada más. No busca registros anteriores, no permite editarlos ni borrarlos desde la ventana, no avisa de duplicados y no guarda cantidad, precio ni fecha. Para corregir algo hay que ir a la hoja y hacerlo a mano.
Si lo que necesitas es controlar existencias de verdad —con entradas, salidas y saldo calculado—, empieza por la plantilla de control de stock, que también es gratis. Y si quieres montar tableros con lo que registres, la base para tablas dinámicas te ahorra inventarte los datos de prueba.
Llévate el formulario montado, con las macros y el catálogo de ejemplo
Formulario de registro de productos en Excel (plantilla gratis)
El archivo es un .xlsm y trae el UserForm completo, las dos hojas y una guía dentro del propio Excel con lo que conviene saber antes de tocarlo. Funciona en Microsoft Excel para Windows; en Excel web y en Google Sheets los formularios de VBA no abren.
Versiones premium
🎯 Deja de pelearte con Excel cada mes
Automatizadas y listas para usar: cobros, pagos, inventario, caja y proyectos. Pago único, acceso de por vida y funcionan sin internet.
Cuentas x Cobrar V1Registras la factura una vez y la plantilla te dice quien te debe, cuanto…USD 27Ver plantilla
Cuentas x Pagar V1Te avisa de lo que vence esta semana, para que no vuelvas a quedar…USD 27Ver plantilla
Control Flujo EfectivoCargas ingresos y gastos y ves de un vistazo si el mes cierra en…USD 27Ver plantilla
Macro Control Stock Basico V1Entradas, salidas y un panel que te avisa de lo que se esta agotando…USD 7Ver plantilla
Gestor de Cotizaciones o Proforma V1Eliges el cliente, eliges los productos y la cotizacion sale con tus datos y…USD 27Ver plantilla
Genera Orden de Compra o ServicioLa orden sale hecha, numerada y lista para enviar, sin copiar y pegar de…USD 27Ver plantilla
Curva S AutomatizadaCargas el avance y la curva se dibuja sola, con el programado y el…USD 20Ver plantilla

Deja una respuesta