¿Ya dominas lo básico? Un curso estructurado de VBA es la vía rápida para dar el salto.
Ver cursos de VBA en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (MsgBox)
- 03Declarar variables (Dim)
- 04Condicionales (la sentencia If)
- 05Repetir (la sentencia For)
- 06Repetir (la sentencia Do While)
- 07Escribir un procedimiento Sub
- 08Procedimientos Function (trabajo que devuelve un valor)
- 09Leer y escribir celdas (Range y Cells)
- 10Trabajar con arrays
- 11Trabajar con texto
- 12La sentencia With
- 13Variables de objeto y trabajo con hojas
- 14Recorrer elementos (For Each)
- 15Manejo de errores (On Error)
- 16La sentencia Select Case
- 17Argumentos (ByVal y ByRef)
- 18Trabajar con colecciones (Collection)
- 19Grabar macros y procedimientos de evento
- 20[Proyecto] Construye una hoja de inventario
Escribir un procedimiento Sub
En esta lección agruparás un trozo de lógica bajo un nombre y lo llamarás desde otro sitio.
Un Sub puede recibir argumentos declarándolos entre paréntesis: Sub Greet(name As String). Se llama con Call Greet("Carlos"), o simplemente Greet "Carlos" sin paréntesis.
El código de ejemplo define un procedimiento que saluda y lo llama con un nombre.
Justo esa doble forma de llamar es lo que más confunde al empezar. La regla es: con Call los argumentos van entre paréntesis; sin Call, no. Escribir Greet("Carlos") sin Call parece correcto y en este caso funciona, pero con varios argumentos da error de sintaxis. Lo sencillo es decidir un estilo y mantenerlo.
Un procedimiento con argumentos no aparece en la lista de macros de Excel, porque el usuario no podría rellenarlos. Por eso las macros pensadas para ejecutarse desde un botón se escriben sin argumentos, y llaman por dentro a los procedimientos que sí los tienen.
🧪 Este sitio no puede compilar ni ejecutar VBA directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
