- Le macro automatizzano le azioni ripetitive in Excel, riducendo gli errori e facendo risparmiare tempo.
- È possibile crearli con il registratore e migliorarli con VBA per una maggiore flessibilità.
- Utilizzare riferimenti relativi per adattarsi a intervalli diversi ed evitare passaggi ridondanti.
- Salva come .xlsm e gestisci la sicurezza per eseguire le macro in tutta sicurezza.

Se ti capita di ripetere sempre le stesse operazioni in Excel, le macro sono la soluzione ideale per risparmiare tempo. Con le macro, puoi automatizzare intere sequenze di azioni (scopri di più sulla programmazione VBA ), dalla formattazione all'importazione di dati o all'esecuzione di calcoli, e attivarle quando vuoi con un clic o una scorciatoia da tastiera.
Quando crei una macro, Excel registra i tuoi clic e le tue sequenze di tasti e li riesegue fedelmente. Puoi quindi modificare il codice per perfezionare l'esecuzione e consultare le risorse di Excel . È comune iniziare con il registratore di macro e poi perfezionarlo con VBA, ottenendo maggiore controllo, flessibilità e zero errori dovuti a disattenzione.
Cos'è esattamente una macro in Excel?
Una macro è un elenco di istruzioni che Excel esegue in un ordine definito . Può essere semplice come applicare uno stile percentuale o complessa come preparare un report con tabelle pivot , formattarlo, creare fogli di lavoro e inviare un'e-mail in Outlook. Le macro vengono salvate nella cartella di lavoro e possono essere eseguite ogni volta che è necessario.
Non è necessario saper programmare per iniziare: il registratore traduce le tue azioni in codice VBA. Tuttavia, una conoscenza di base del VBA ti permetterà di creare funzioni personalizzate, maschere e persino mini-applicazioni all'interno di Excel.
Perché usare le macro? Vantaggi reali
Lo scopo principale di una macro è evitare attività ripetitive e ridurre al minimo gli errori . Se prepari lo stesso report ogni mese, una macro ti risparmierà i passaggi meccanici e ti permetterà di concentrarti su ciò che conta davvero.
Tra i suoi vantaggi figurano il risparmio di tempo, l'esecuzione coerente (senza passaggi saltati) e la possibilità di creare scorciatoie e pulsanti per velocizzare i processi . Se utilizzi Excel solo occasionalmente, potrebbe non valerne la pena; ma se lo usi quotidianamente, noterai la differenza fin dal primo giorno.
Abilita la scheda Sviluppatore (Windows e Mac)
La scheda Sviluppo è nascosta per impostazione predefinita. In Windows, fai clic con il pulsante destro del mouse sulla barra multifunzione e seleziona "Personalizza la barra multifunzione". Seleziona "Sviluppatore" e fai clic su OK. Dopodiché, vedrai la scheda Sviluppo accanto a Visualizza.
Su Mac, vai su Excel > Preferenze > Barre degli strumenti e barra multifunzione. In "Schede principali", seleziona "Sviluppatore" e salva. Questo ti darà accesso al registratore, al VBA e ai controlli . Se non hai familiarità con Excel, consulta la guida di base di Excel per familiarizzare con la barra multifunzione e le sue opzioni.
Come creare macro con il Registratore
Il registratore è perfetto per iniziare. In Sviluppatore > Registra macro (oppure Alt+T+M+R su Windows), assegna un nome descrittivo. Ricorda: il nome deve iniziare con una lettera, senza spazi o simboli.
Scegli dove salvare: "Questa cartella di lavoro" funzionerà nella maggior parte dei casi. Se desideri averla sempre a disposizione, seleziona "Cartella di lavoro Macro personali" ed Excel la creerà/salverà in Personal.xlsb , che si aprirà in modalità nascosta con Excel.
Facoltativamente, è possibile aggiungere una scorciatoia. Per evitare conflitti (ad esempio, la perdita di Ctrl+Z), si consiglia di utilizzare le scorciatoie con Ctrl+Shift. È anche possibile scrivere una breve e chiara descrizione (molto utile quando si hanno molte macro).
Fai clic su OK ed esegui le azioni da registrare. Ad esempio: seleziona A1 e applica il formato "Percentuale". Evita clic non necessari o modifiche di selezione che non fanno parte del processo previsto, perché il programma di registrazione registra quasi tutto.
Al termine, interrompi la registrazione. Per eseguirla, vai su Sviluppo > Macro (oppure Alt+F8), seleziona la macro e fai clic su Esegui. Vedrai Excel ripetere i passaggi esattamente nello stesso ordine.
Esegui, modifica e gestisci le tue macro
Da Sviluppatore > Macro (Alt+F8) è possibile eseguire, modificare o eliminare le macro. Se si sceglie Modifica, si aprirà l'editor di Visual Basic con il codice registrato, che è possibile ripulire e ottimizzare (spesso include passaggi ridondanti).
Assegnare una macro a un pulsante o a una forma è molto semplice: inserisci una forma, fai clic con il pulsante destro del mouse > Assegna macro, scegli la macro e il gioco è fatto. Quando fai clic sulla forma, la macro verrà eseguita immediatamente.
Per averlo sempre a portata di mano sulla barra di accesso rapido, apri il menu della barra degli strumenti (freccia in basso) > Altri comandi > in "Comandi disponibili in", scegli "Macro", aggiungi il tuo e cambia l'icona se lo desideri. Ora avrai un pulsante permanente anche quando non sei in modalità sviluppatore.
Se devi riutilizzare la macro in un'altra cartella di lavoro, puoi copiare il modulo dall'editor di Visual Basic. Apri l'editor di Visual Basic (Alt+F11), trascina il modulo nell'altra cartella di lavoro aperta oppure utilizza la funzione Esporta/Importa file .bas.
Programmazione di macro in Excel con l'editor di Visual Basic (VBA)
Per andare oltre il registratore, apri l'Editor con Alt+F11. Inserisci un Modulo (Inserisci > Modulo) e crea la tua prima subroutine. Lo schema di base è NomeSub() … Fine Sub.
Ad esempio, per visualizzare un messaggio e scrivere un valore nella cella A1, si potrebbe iniziare con qualcosa di semplice. In questo modo si comprende la struttura e come richiamare la macro da Excel (Alt+F8) o assegnarla a un pulsante, con pochissime righe di codice :
Sub Primera_Macro()
Range("A1").Value = "Esto de las macros mola."
MsgBox "Hola, querido amigo."
End Sub
Un altro breve esempio di applicazione dello stile percentuale alla selezione corrente. Questa macro replica ciò che hai fatto con il registratore , ma digitandolo direttamente:
Sub FormatoPorcentaje()
Selection.Style = "Percent"
End Sub
La combinazione ideale è: registrare per velocizzare il processo, quindi aprire l'editor VBA per eliminare i passaggi superflui, aggiungere variabili, condizioni o cicli. In questo modo, si trasforma una registrazione "letterale" in una macro robusta e riutilizzabile.
Riferimenti assoluti vs. relativi
Per impostazione predefinita, il registratore crea macro in modalità assoluta: agisce sempre sulle stesse celle (ad esempio, B3) indipendentemente dalla posizione in cui ci si trova durante l'esecuzione. Se la posizione dei dati cambia nel processo, questa impostazione potrebbe non essere adatta alle proprie esigenze.
Con l'opzione "Usa riferimenti relativi", la macro funziona in relazione alla cella attiva all'inizio dell'esecuzione. Ad esempio, se si inizia a scrivere nella cella B3 e si digita "Nome", "Cognome", ecc., spostandosi verso destra, quando si esegue la macro dalla cella C4, le stesse informazioni verranno digitate in relazione alle celle C4, D4, E4, ecc.
Un esempio tipico: aggiungere titoli a una tabella che a volte inizia nella cella B3 e a volte nella cella C5. Con la modalità assoluta, il titolo verrebbe sempre scritto nella cella B3. Con la modalità relativa, il titolo si adatterà alla cella di partenza selezionata.
Errori comuni durante la registrazione dei processi
Un errore comune è quello di registrare una formula con il comando "trascina" per, ad esempio, tre righe, pensando che funzionerà anche per tabelle più lunghe. Chi registra il comando registrerà qualcosa di equivalente a " riempi tre celle verso il basso ", non "fino alla fine della tabella".
La soluzione consiste nel cambiare approccio: utilizzare intervalli dinamici (ad esempio, rilevando l'ultima riga), cicli o il metodo CurrentRegion, oppure modificare la macro in VBA dopo averla registrata in modo che si adatti a qualsiasi dimensione.
Buone pratiche durante la registrazione
Prima di registrare, esegui manualmente il processo un paio di volte per perfezionarlo. Effettua registrazioni brevi e specifiche anziché una sola lunga; in questo modo saranno più facili da gestire e combinare.
Evita clic superflui, scorrimento della barra multifunzione e selezioni irrilevanti. Assicurati che il nome e la descrizione della macro siano chiari, in modo che tu o qualsiasi collega possiate identificarne immediatamente lo scopo.
Eseguire macro in molti modi
Oltre alla finestra di dialogo Macro (Alt+F8), è possibile avviare le macro utilizzando una forma, un pulsante sulla barra di accesso rapido o aprendo la cartella di lavoro. È persino possibile eseguire la macro da Excel tramite altre app di Office, consentendo di automatizzare attività tra applicazioni diverse (ad esempio, aggiornare una tabella e inviare un'e-mail tramite Outlook).
Pensate attentamente alle scorciatoie da tastiera: se assegnate Ctrl+Z a una macro, perderete la possibilità di annullare le operazioni mentre la cartella di lavoro è aperta. Pertanto, si consiglia di utilizzare combinazioni di tasti come Ctrl+Maiusc per evitare conflitti.
Salvataggio delle cartelle di lavoro con macro
Quando un file contiene codice VBA, salvalo come file .xlsm in modo che il codice venga conservato e possa essere eseguito. Salvarlo come file .xlsx eliminerà il progetto VBA . Se desideri utilizzare macro globali, usa la Cartella di lavoro Macro personali (Personal.xlsb).
Sicurezza e abilitazione delle macro
Le macro potrebbero essere bloccate a seconda delle impostazioni di sicurezza. Controlla il Centro protezione per abilitarle selettivamente e non abilitare mai macro provenienti da fonti sconosciute. Comprendere il proprio livello di sicurezza aiuta a trovare il giusto equilibrio tra protezione e produttività.
Assegna macro a pulsanti, forme e controlli
Per consentire agli utenti di eseguire automaticamente le macro, assegna una macro a un pulsante, una forma o un controllo. Fai clic con il pulsante destro del mouse sull'oggetto > Assegna macro > seleziona. Puoi anche posizionare un'icona sulla barra multifunzione o sulla barra di accesso rapido e collegarla alla macro.
Se si utilizzano moduli o controlli ActiveX, è possibile assegnare loro macro o procedure evento (ad esempio, al clic). Ciò consente di creare interfacce più intuitive e processi guidati.
Esempi di macro utili (VBA)
Questi esempi illustrano attività comuni. Puoi incollarli in un modulo (Alt+F11 > Inserisci > Modulo) e adattarli. Ricorda di firmare le cartelle di lavoro o di modificare le impostazioni di sicurezza, se richiesto dalla tua organizzazione, in modo da poterle eseguire senza avvisi.
Copia il contenuto selezionato in un'altra posizione sullo stesso foglio: SelezioneCopia Destinazione
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
Stampa il foglio attivo: ActiveSheet.PrintOut
Sub ImprimirHojaActual()
ActiveSheet.PrintOut
End Sub
Salva il file come cartella di lavoro con macro abilitate (.xlsm): ActiveWorkbook.SaveAs
Sub GuardarComoXlsm()
Dim ruta As String
ruta = ThisWorkbook.Path & Application.PathSeparator & "LibroConMacros.xlsm"
ActiveWorkbook.SaveAs Filename:=ruta, FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
Applica la formattazione a un intervallo (regola l'intervallo in base alle tue esigenze): Con Range(…)
Sub FormatoRango()
With Range("A1:D10")
.Font.Bold = True
.Interior.Color = RGB(230, 230, 250)
.Borders.LineStyle = xlContinuous
End With
End Sub
Trova un valore in un intervallo e visualizza la prima corrispondenza: 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
Caso pratico: formattazione in percentuale
Registrazione: Avvia la registrazione, assegnale un nome, scegli dove salvarla e, facoltativamente, assegna una scorciatoia e una descrizione. Seleziona le celle e applica "Percentuale" dalla scheda Home. Interrompi la registrazione e poi riavviala con Alt+F8. Se desideri riprodurla con codice minimale, usa Selection.Style = "Percentuale" in VBA.
Suggerimento: durante la registrazione, evitate di cambiare cella inutilmente. Questi movimenti avanti e indietro vengono registrati e possono rallentare e compromettere la macro.
Automatizzare le attività lunghe: le macro piccole sono migliori
Se il tuo processo prevede molti passaggi, valuta la possibilità di suddividerlo in diverse macro più piccole e di richiamarle in sequenza. Questo semplifica la manutenzione, consente di riutilizzare i blocchi e agevola il debug.
Ad esempio, una macro per preparare i dati, un'altra per formattarli, un'altra ancora per generare una stampa e un'altra per esportarli in PDF o inviarli via e-mail . È possibile richiamarle una alla volta o tutte contemporaneamente.
Modifica e pulisci il codice registrato
Il registratore cattura "tutto": selezioni, clic e modifiche di tabulazione. Quando si apre l'editor VBE, rimuove le selezioni non necessarie (Seleziona/Selezione) sostituendole con riferimenti diretti (ad esempio, Range("A1").Value = ... ) e raggruppa le formattazioni in blocchi Con/Termina con.
Inoltre, aggiunge variabili e una gestione di base degli errori. Un paio di istruzioni if e semplici controlli prevengono errori quando l'intervallo è vuoto o la selezione non è quella prevista.
Domande frequenti
Come si crea una UserForm in Excel? Apri l'editor di Visual Basic (Alt+F11), vai su Inserisci > UserForm e aggiungi i controlli (caselle di testo, pulsanti, ecc.). Puoi visualizzarla utilizzando una macro.
Sub MostrarFormulario()
UserForm1.Show
End Sub
Da lì, assegna delle procedure agli eventi dei controlli (ad esempio, il clic di un pulsante) per eseguire la logica necessaria.
Come posso proteggere/sbloccare un foglio di calcolo con le macro? Utilizza queste routine modificando la password a piacimento. Ti permettono di attivare o disattivare la protezione con un solo clic.
Sub ProtegerHoja()
ActiveSheet.Protect Password:="segura", AllowFiltering:=True
End Sub
Sub DesprotegerHoja()
ActiveSheet.Unprotect Password:="segura"
End Sub
Come si elimina una macro? Vai su Sviluppatore > Macro, seleziona la macro e premi Elimina. Se vuoi eliminare tutto il codice da un modulo, apri l'editor VBE (Alt+F11), individua il modulo nel progetto, fai clic con il pulsante destro del mouse e seleziona Rimuovi modulo (puoi esportarlo prima se vuoi salvarlo).
Un ultimo consiglio pratico: se formatti un report mensile in cui i clienti con saldi insoluti devono essere evidenziati in rosso e in grassetto, registra la sequenza una sola volta, modifica il codice VBA per applicarlo all'intervallo corretto (utilizzando il rilevamento dell'ultima riga o i filtri) e salva la macro nella tua cartella di lavoro personale. La prossima volta, basterà una semplice scorciatoia o un pulsante per applicare la formattazione istantaneamente, senza problemi e in pochi secondi.