Programar macros a Excel: la guia completa pas a pas

Darrera actualització: 29 d'agost de 2025
  • Les macros automatitzen accions repetitives a l'Excel, redueixen errors i estalvien temps.
  • Pots crear-les amb la gravadora i millorar-les amb VBA per a més flexibilitat.
  • Fes servir referències relatives per adaptar-te a diferents rangs i evita passos redundants.
  • Desa com a .xlsm i gestiona la seguretat per executar macros amb confiança.

Macros en Excel i com programar-les

Si repeteixes tasques en Excel una vegada i una altra, les macros són el teu millor aliat per deixar de perdre temps. Amb elles pots automatitzar seqüències completes d'accions (aprèn més sobre programació VBA ), des de donar format fins a importar dades o executar càlculs, i disparar-les quan vulguis amb un clic o drecera de teclat.

En crear una macro, l'Excel registra els vostres clics i pulsacions i els torna a executar de forma fidel. Després pots retocar el codi per afinar l'execució i consultar recursos per a Excel . És habitual començar amb la gravadora i després ajustar amb VBA, aconseguint més control, flexibilitat i zero errors per badades.

Què és exactament una macro a Excel?

Una macro és una llista d'instruccions que l'Excel executa en l'ordre definit . Pot ser tan simple com aplicar un estil de percentatge o tan complexa com preparar un informe amb taules dinàmiques , formatar-lo, crear fulls i enviar un correu a Outlook. Les macros es guarden al teu llibre i les pots executar sempre que ho necessitis.

No cal saber programar per començar: la gravadora tradueix les teves accions a codi VBA. Tot i així, conèixer una mica de VBA et permetrà crear funcions personalitzades, formularis i fins i tot miniaplicacions dins d'Excel.

Per què fer servir macros? Avantatges reals

La gran finalitat d'una macro és evitar feines repetitives i minimitzar errors . Si cada mes prepares el mateix informe, amb una macro t'estalvies els passos mecànics i et centres en allò important.

Entre els seus beneficis hi ha l'estalvi de temps, l'execució consistent (sense oblits), i la possibilitat de crear dreceres i botons per accelerar processos . Si uses l'Excel de manera ocasional potser no et compensi; però si el fas servir cada dia, notaràs la diferència des del primer dia.

Habilitar la pestanya Programador (Windows i Mac)

La cinta Programador ve oculta per defecte. Al Windows, feu clic dret a la cinta i entreu a «Personalitzar la cinta d'opcions». Marca Programador i accepta. Després, veureu la pestanya Programador al costat de Vista.

A Mac, aneu a Excel > Preferències > Barra d'eines i cinta d'opcions. A "Pestanyes principals", marca "Programador" i desa. Amb això tindràs a mà la gravadora, l'accés a VBA i els controls . Si esteu començant, revisa el maneig bàsic d'Excel per orientar-te amb la cinta i opcions.

Com crear macros amb la Gravadora

La gravadora és perfecta per començar. A Programador > Enregistra macro (o Alt+T+M+R al Windows) assigneu un nom descriptiu. Recordeu: el nom ha de començar per lletra, sense espais ni símbols.

Trieu on desar: «Aquest llibre» servirà en la majoria de casos. Si la voleu tenir sempre disponible, seleccioneu «Llibre de macros personal» i l'Excel crearà/guardarà a Personal.xlsb , que s'obre ocult amb l'Excel.

Opcionalment afegeix un accés directe. Per evitar conflictes (per exemple, perdre Ctrl+Z), es recomana utilitzar combinacions amb Ctrl+Maj. També podeu escriure una descripció breu i clara (molt útil quan tinguis moltes macros).

Clica Acceptar i fes les accions a gravar. Per exemple: seleccioneu A1 i apliqueu el format «Percentatge». Evita clics innecessaris o canvis de selecció que no formen part del procés objectiu, perquè la gravadora ho registra gairebé tot.

  App manager d'Android: guia completa i comparativa

En acabar, atura la gravació. Per executar-la, vés a Programador > Macros (o Alt+F8), escull el teu macro i prem Executar. Veureu com Excel repeteix els passos exactament en el mateix ordre.

Executar, editar i administrar les teves macros

Des de Programador > Macros (Alt+F8) podeu executar, editar o eliminar macros. Si escolliu Edita, s'obrirà l'Editor de Visual Basic amb el codi gravat, que podeu netejar i optimitzar (sol incloure passos redundants).

Assignar una macro a un botó o forma és molt còmode: insereix una forma, fes clic dret > Assignar macro, escull la macro i llest. En prémer la forma, s'executarà a l'instant.

Per tenir-la sempre a mà a la barra d'eines d'accés ràpid, obriu el menú de la barra (fletxa avall) > Més ordres > a «Ordres disponibles a», trieu «Macros», afegiu la vostra i canvieu la icona si voleu. Ara tindràs un botó permanent fins i tot quan no estiguis a Programador.

Si necessiteu reutilitzar la macro en un altre llibre, podeu copiar el mòdul des de l'Editor de Visual Basic. Obre VBE (Alt+F11), arrossega el mòdul a l'altre llibre obert o utilitza Exportar/Importar fitxer .bas.

Programar macros a Excel amb l'Editor de Visual Basic (VBA)

Per anar més enllà de la gravadora, obriu l'Editor amb Alt+F11. Insereix un Mòdul (Insert > Module) i crea la teva primera subrutina. El patró bàsic és Sub Nom() … End Sub.

Per exemple, per mostrar un missatge i escriure un valor a A1 podries començar amb una cosa senzilla. Així entens l'estructura i com anomenar la macro des d'Excel (Alt+F8) o assignar-la a un botó, amb molt poques línies :

Sub Primera_Macro()
    Range("A1").Value = "Esto de las macros mola."
    MsgBox "Hola, querido amigo."
End Sub

Un altre exemple ràpid per aplicar l'estil de percentatge a la selecció actual. Aquesta macro replica el que vas fer amb la gravadora , però escrit directament:

Sub FormatoPorcentaje()
    Selection.Style = "Percent"
End Sub

La combinació ideal és: grava per accelerar i després obre el VBE per netejar passos superflus, afegir variables, condicions o bucles. Així converteixes un enregistrament «literal» en una macro robusta i reutilitzable.

Referències absolutes vs relatives

Per defecte, la gravadora crea macros en mode absolut: sempre actua sobre les mateixes cel·les (per exemple, B3) sense importar on ets en executar. Si en el vostre procés les dades canvien de posició, això pot no ser el que necessiteu.

Amb "Utilitzar referències relatives", la macro treballa respecte a la cel·la activa en iniciar l'execució. Per exemple, si en gravar vas començar a B3 i vas escriure «Nom», «Cognom», etc. movent-te a la dreta, en executar des de C4, ho escriurà des de C4, D4, E4… de forma relativa.

Un exemple típic: posar títols a una taula que de vegades comença a B3 i d'altres a C5. Amb mode absolut, sempre escriuria a B3. De manera relativa, s'adaptarà a la cel·la d'inici seleccionada.

Errors freqüents en gravar processos

Una ensopegada comuna és gravar un «arrossegar» de fórmules per, per exemple, tres files, i pensar que funcionarà en taules més llargues. La gravadora registrarà alguna cosa equivalent a « emplena tres cel·les cap avall », no «fins al final de la taula».

La solució és canviar l'enfocament: utilitza rangs dinàmics (per exemple, detectar l'última fila), bucles o el mètode CurrentRegion, o bé ajusta la macro a VBA després de gravar-la perquè s'escali a qualsevol mida.

  Guia completa de Gemini Code Assist: funcions, edicions i novetats

Bones pràctiques en gravar

Abans de gravar, feu el procés manual un parell de vegades per polir-lo. Fes enregistraments curts i específics en lloc d'una enorme; així és més fàcil mantenir-les i combinar-les.

Evita clics sobrants, girs innecessaris per la cinta i seleccions que no aporten. Mantingues el nom i la descripció de la macro clars perquè tu o qualsevol company identifiqueu el seu propòsit a l'instant.

Executar macros de moltes maneres

A més del quadre Macros (Alt+F8), podeu llançar macros amb una forma, un botó a la barra d'accés ràpid o en obrir el llibre. Fins i tot pots fer que l'Excel executi la macro des d'altres apps d'Office, cosa que et permet automatitzar tasques multiaplicació (per exemple, actualitzar una taula i enviar un correu electrònic per Outlook).

Pensa en dreceres de teclat amb compte: si assignes Ctrl+Z a una macro, perdràs la capacitat de Desfer mentre el llibre estigui obert. Per això se suggereix utilitzar combinacions amb Ctrl+Majús per evitar conflictes.

Desar llibres amb macros

Quan un fitxer té VBA, deseu-lo com a .xlsm perquè el codi es conservi i pugui executar-se. Si deseu a .xlsx, perdreu el projecte de VBA . Si voleu macros globals, feu servir el Llibre de macros personal (Personal.xlsb).

Seguretat i habilitació de macros

Les macros poden estar bloquejades segons la configuració de seguretat. Revisa el Centre de confiança per habilitar-les de forma selectiva i mai no actives macros d'orígens desconeguts. Conèixer el teu nivell de seguretat t'ajuda a equilibrar protecció i productivitat.

Assignar macros a botons, formes i controls

Perquè un usuari les executi sense pensar, assigna una macro a un botó, forma o control. Feu clic dret sobre l'objecte > Assignar macro > seleccioneu. També podeu col·locar una icona a la cinta o la barra d'accés ràpid i vincular-la a la macro.

Si utilitzeu formularis o controls ActiveX, podeu assignar-los macros o procediments d'esdeveniments (per exemple, en fer clic). Això permet interfícies més amigables i processos guiats.

Exemples útils de macros (VBA)

Aquests exemples il·lustren tasques habituals. Pots enganxar-los en un Mòdul (Alt+F11 > Insert > Module) i adaptar-los. Recorda signar els llibres o ajustar la seguretat si la teva organització ho requereix per poder executar-los sense avisos.

Copiar el contingut seleccionat a una altra ubicació al mateix full: Selection.Copy Destination

Sub CopiarSeleccion()
    If TypeName(Selection) = "Range" Then
        Selection.Copy Destination:=Selection.Offset(0, 2)
    Else
        MsgBox "Selecciona un rango de celdas primero."
    End If
End Sub

Imprimir el full actiu: ActiveSheet.PrintOut

Sub ImprimirHojaActual()
    ActiveSheet.PrintOut
End Sub

Desar el fitxer com a llibre habilitat per a macros (.xlsm): ActiveWorkbook.SaveAs

Sub GuardarComoXlsm()
    Dim ruta As String
    ruta = ThisWorkbook.Path & Application.PathSeparator & "LibroConMacros.xlsm"
    ActiveWorkbook.SaveAs Filename:=ruta, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

Aplicar format a un rang (ajusta el rang a les teves necessitats): With Range(…)

Sub FormatoRango()
    With Range("A1:D10")
        .Font.Bold = True
        .Interior.Color = RGB(230, 230, 250)
        .Borders.LineStyle = xlContinuous
    End With
End Sub

Cercar un valor en un rang i mostrar la primera coincidència: Range(…).Find

Sub BuscarValor()
    Dim celda As Range
    Dim valor As String
    valor = InputBox("¿Qué valor quieres buscar?")
    If valor = "" Then Exit Sub
    Set celda = Range("A1:D1000").Find(What:=valor, LookIn:=xlValues, LookAt:=xlPart)
    If Not celda Is Nothing Then
        MsgBox "Encontrado en: " & celda.Address
        celda.Select
    Else
        MsgBox "No se encontró el valor especificado."
    End If
End Sub

Cas pràctic: donar format de percentatge

Gravant: inicia l'enregistrament, posa-li nom, escull on desar, opcionalment assigna drecera i descripció. Seleccioneu les cel·les i apliqueu «Percentatge» des d'Inici. Atura la gravació i executa-la després amb Alt+F8. Si voleu reproduir-lo amb codi minimalista, feu servir Selection.Style = «Percent» a VBA.

  Guia Completa de Frameworks d'IA Agèntica de Codi Obert

Consell: durant l'enregistrament no canvieu de cel·la sense motiu. Aquestes anades i vingudes queden registrades i poden alentir i embrutar la macro.

Automatitzar tasques llargues: millor macros petites

Si tens un procés amb molts passos, planteja't dividir-lo en diverses macros més petites i trucar-les en cadena. Això facilita el manteniment, permet reutilitzar blocs i simplifica la depuració.

Per exemple, una macro per preparar dades, una altra per formatar, una altra per generar un full d'impressió i una altra per exportar a PDF o enviar per correu . Podràs trucar-les d'una en una o totes alhora.

Editar i netejar el codi gravat

La gravadora captura tot: seleccions, clics i canvis de pestanya. En obrir el VBE, elimina seleccions innecessàries (Select/Selection) substituint-les per referències directes (per exemple, Range(«A1»).Value = … ​​) i agrupa formats en blocs With/End With.

A més, afegeix variables i control derrors bàsic. Un parell de If i comprovacions simples eviten errors quan el rang és buit o la selecció no és l'esperada.

Preguntes freqüents

Com creo un formulari (UserForm) a Excel? Obre l'Editor de Visual Basic (Alt+F11), vés a Insert > UserForm i afegeix controls (quadres de text, botons, etc.). Pots mostrar-ho amb una macro:

Sub MostrarFormulario()
    UserForm1.Show
End Sub

Des d'aquí, assigneu procediments als esdeveniments dels controls (per exemple, Click d'un botó) perquè executin la lògica que necessiteu.

Com protegeixo/desprotegeixo un full amb macros? Fes servir aquestes rutines canviant la contrasenya al teu gust. Et permeten activar o treure la protecció amb un clic :

Sub ProtegerHoja()
    ActiveSheet.Protect Password:="segura", AllowFiltering:=True
End Sub

Sub DesprotegerHoja()
    ActiveSheet.Unprotect Password:="segura"
End Sub

Com puc eliminar una macro? Aneu a Programador > Macros, seleccioneu la macro i premeu Suprimeix. Si vols esborrar tot el codi d'un mòdul, obre el VBE (Alt+F11), localitza el mòdul al projecte, clic dret i Remove Module (pots exportar-lo abans per si el vols desar).

Un últim apunt pràctic: si mensualment formateu un informe on els clients amb deute han d'anar en vermell i negret, enregistreu la seqüència una vegada, ajusteu el codi en VBA perquè s'apliqui al rang correcte (usant detecció d'última fila o filtres) i deseu la macro al vostre llibre de macros personal. La propera vegada, n'hi haurà prou amb una drecera o un botó per aplicar el format a l'instant amb zero errors i en segons.

Les Macros en Excel
Article relacionat:
Les Macros en Excel: Com automatitzar tasques i augmentar la teva productivitat