Programmazione di macro in Excel: la guida completa passo passo

Ultimo aggiornamento: 29 agosto 2025
  • 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.

Macro in Excel e come programmarle

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.

  Come eliminare le foto duplicate su Android passo dopo passo

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.

  Scorciatoie da tastiera nei browser: una guida completa per una navigazione più veloce

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.

  Guida completa ai trucchi di Notepad++ per principianti

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.

Macro in Excel
Articolo correlato:
Macro in Excel: come automatizzare le attività e aumentare la produttività