Registrare una macro in Microsoft Excel
Esegui eventi ripetitivi con le macro Excel
Autore: Andrea Pacchiarotti
Ultimo aggiornamento: 14 Marzo 2023
Categoria: Microsoft Office Excel Macro

Le macro consentono di registrare una serie di eventi, come ad esempio formule, funzioni, formattazioni, ecc. ed eseguirli automaticamente quando necessario, il tutto in modo semplice e veloce. Ciò consente di ripetere rapidamente comandi da eseguire in serie tante volte o che risultano tediosi da replicare, senza necessità di scrivere una riga di codice VBA (Visual Basic for Application).
Questo tutorial tratterà le macro registrate ovvero quelle generate automaticamente da Excel registrando le tue azioni (le macro programmate sono infatti possibili solo se si conosce il codice di programmazione VBA).
Il processo di registrazione ti consente di eseguire una serie di passaggi in Excel, quindi salvare quei passaggi come una macro. In questo modo puoi riutilizzare quella sequenza di passaggi in futuro eseguendo la suddetta macro.
Il vantaggio delle macro registrate è che non è necessario conoscere il codice VBA per crearle. Lo svantaggio è che il codice generato automaticamente da Excel non è il più efficiente possibile e include passaggi non necessari.
Se si è programmatori è comunque possibile modificare autonomamente il codice VBA per aggiungere o rimuovere passaggi, correggere errori o bug, aggiungere commenti, ecc.
Vediamo dunque le procedure utili per registrare una macro in Microsoft Excel.
Sommario
- Sicurezza Macro
- Registrare macro
- Eseguire macro
- Modificare macro
- Excel (VBA): velocizzare esecuzione macro
- Macro Excel con riferimenti relativi e riferimenti assoluti (Video)
- Conclusioni
Sicurezza Macro
Per eseguire una macro va prima verificato il grado di protezione impostato in Excel, visualizzabile dalla scheda Sviluppo (se non è presente è necessario cliccare la scheda File, voce Opzioni, nella finestra che si apre, cliccare Personalizzazione barra multifunzione e sulla destra spuntare la casella di controllo Sviluppo), icona Sicurezza macro; comparirà una finestra che permetterà di impostar e il livello di protezione scegliendo tra:
- disabilita tutte le macro senza notifica
- disabilita tutte le macro con notifica
- disabilita tutte le macro tranne quelle con firma digitale
- abilita tutte le macro (scelta non consigliata, possibile esecuzione di codice pericoloso)
è preferibile scegliere quest’ultima impostazione se si è sicuri della provenienza dei file ricevuti.
Registrare macro
Come detto, chi usa di frequente Excel avrà notato che spesso capita di svolgere operazioni ripetitive. A volte attraverso la semplice registrazione di una macro è possibile eseguire tali operazioni automaticamente cliccando solo un tasto; per farlo occorre il Registratore di macro che memorizza le azioni svolte dall'utente e le converte in linguaggio VBA. L’icona si trova sia nella scheda Visualizza che Sviluppo e si chiama Registra macro; cliccandola si aprirà una finestra che richiede:
- Nome macro: di default viene assegnato il nome Macro1, tenere però presente che il nome
- deve essere univoco e diverso dalle parole chiave del codice
- deve iniziare con una lettera e possibilmente essere evocativo
- non deve contenere spazi, caratteri speciali o punteggiatura come
@ # $% ^ & * () + - = [] {}; ':! ",. <> \ |? ` ~ - Tasto di scelta rapida: si può facoltativamente definire una combinazione di tasti per eseguire la macro, si consiglia di non usare questa opzione per evitare di utilizzare tasti già assegnati
- Memorizza macro in:
- Cartella macro personale ovvero il file Personal.xlsb, caricato automaticamente all’avvio di Excel; le macro qui presenti sono disponibili per tutti i file Excel che si aprono.
Tale file si vede abilitando i file nascosti e, a seconda del sistema operativo installato sul proprio computer, andando in un percorso simile a:
C:\Utenti \ NomeUtente \ AppData \ Roaming \ Microsoft \ Excel \ XLStart - Nuova cartella di lavoro
- Questa cartella di lavoro, in tal caso la macro è salvata nella cartella corrente; scelta consigliata
Scegliendo Cartella macro personale, Excel salva la macro nella cartella Personal.xlsb che viene caricata all’avvio di Excel: memorizzandola qui essa sarà disponibile per tutte le cartelle di Excel. Se dovesse sorgere qualche problema si dovrebbe editare il file Personal.xlsb e cancellare o modificare la macro che presenta problemi. Se non si riesce a modificare la macro è possibile cancellare il file Personal.xlsb senza pregiudicare Excel, in quanto se tale file è assente, Excel lo ricrea con le impostazioni di default.
Scegliendo invece Questa cartella di lavoro, la macro verrà salvata nella cartella corrente (scelta consigliata)
- Memorizza macro in: serve per commentare ciò che fa la macro, per default il VBA immette una descrizione costituita da qualche riga vuota, dalla data di registrazione della macro e dal nome dell'autore
Si provi a registrare una semplice macro chiamata IntCentro, da memorizzare in Questa cartella di lavoro, che metta la frase Corso VBA al centro dell’intestazione.
Servirà dunque cliccare l’icona Registra macro, inserire l’intestazione e ricliccare la stessa icona che si sarà trasformata in Interrompi registrazione.
Entrare nel VBE (Visual Basic Editor) attraverso la combinazioni di tasti Alt+F11 o dalla scheda Sviluppo icona Visual Basic, guardare il codice (per ingrandirlo cliccare la voce Strumenti, poi Opzioni… e infine Formato) e notare:
- che nelle parentesi tonde non vengono passati parametri alla Sub
- che il codice si è registrato in un modulo
- la ridondanza del listato; si sarebbe potuto fare la stessa cosa semplicemente con la seguente riga di codice:
ActiveSheet.PageSetup.CenterHeader="Corso VBA"
(notare che i linguaggi di programmazione hanno molti termini in lingua inglese)
Durante la registrazione della macro bisogna stare attenti alle operazioni svolte perché vengono registrate tutte le azioni che si fanno, quindi anche quelle sbagliate. È da ricordare che nella macro, per impostazione predefinita, i riferimenti sono assoluti. Ciò significa che se ad esempio si seleziona una colonna in fase di registrazione, l’azione registrata verrà sempre eseguita su quella colonna. Si possono rendere relativi i riferimenti cliccando, dalla scheda Sviluppo, l’icona Usa riferimenti relativi prima di avviare la registrazione.
A volte è anche necessario correggere una macro registrata. Per farlo bisogna andare sulla scheda Visualizza, icona Macro, icona Visualizza Macro, selezionare il nome della macro e cliccare il pulsante Modifica. Ma la modifica è possibile solo se si conosce il linguaggio VBA, quindi è normalmente necessario cancellare la macro corrente e registrarla una seconda volta.
Eseguire macro
È possibile eseguire la macro:
- dalla scheda Sviluppo, icona Macro e, nella finestra che si apre, selezionare il nome della macro e cliccare Esegui (si ricorda che le intestazioni in Excel si vedono solo dall’anteprima di stampa o dalla stampa cartacea)
- usando la combinazione da tastiera se impostata in fase di preregistrazione
- dal VBE attraverso l’icona Esegui macro (F5)
- dalla barra di accesso rapido: cliccando la scheda File, Opzioni e, nella finestra che si apre, Barra di accesso rapido. A sinistra nell’elenco a discesa Scegli comandi da, cliccare Macro. Selezionare la macro desiderata e premere Aggiungi
- dalla barra multifunzione (ribbon): cliccando la scheda File, Opzioni e, nella finestra che si apre, Personalizzazione barra multifunzione. A destra cliccare il pulsante Nuova scheda. Un po’ più in alto compaiono due nuove voci, Nuova scheda (personalizzato) e Nuovo gruppo (personalizzato), cliccandoli si possono rinominare attraverso il pulsante Rinomina… (ad esempio si potrebbe chiamare la prima voce MieMacro e la seconda IntCentro). A sinistra nell’elenco a discesa Scegli comandi da, cliccare Macro. Selezionare la macro desiderata e premere Aggiungi per aggiungerla all’interno del gruppo IntCentro (se desiderato cliccare Rinomina… per cambiare l’aspetto dell’icona). Al termine comparirà sul ribbon una scheda dal nome MieMacro con un gruppo IntCentro che conterrà l’icona della macro
- dal foglio stesso attraverso un pulsante inserito tramite la scheda Inserisci, icona Forma: scelta e disegnata sul foglio la forma desiderata, cliccandola con il tasto destro del mouse e scegliendo Assegna Macro oppure dalla scheda Sviluppo attraverso il pulsante dei Controlli modulo
Modificare macro
Se conosci il VBA puoi modificare una macro registrata, seguendo questi passaggi:
- Apri l'Editor Visual Basic (VBE) in Excel (scheda Sviluppatore > Visual Basic)
- Trova la tua macro nel riquadro in alto a sinistra
- Fai doppio clic sul nome della macro per visualizzare il codice
- Apporta le modifiche al codice VBA desiderato
- Salva le modifiche (menu File VBE > Salva)
Excel (VBA): velocizzare esecuzione macro
- Non registrare le macro
- Scrivere un codice snello
- Dichiarare le variabili correttamente e specificarne il tipo
- Disattivare il calcolo automatico
- Disattivare gli aggiornamenti dello schermo
- Usare VbNullString
- Evitare il copia e incolla
- Usare With ... End With
- Aggiungere la gestione degli errori
- Usare con parsimonia le istruzioni condizionali
- Non selezionare i fogli di lavoro se non necessario
Usare VBA può causare rallentamenti all’applicativo. Ecco alcune semplici regole per migliorare l'efficienza
- Non registrare le macro
perché scrivono molto più codice del necessario - Scrivere un codice snello
in modo da ridurre i tempi di esecuzione, ad esempio scrivendo più istruzioni in una singola riga - Dichiarare le variabili correttamente e specificarne il tipo
per evitare che l'applicativo gli assegni un tipo Variant con inutile spreco di spazio - Disattivare il calcolo automatico
Quando un nuovo valore viene immesso in una cella, Excel ricalcolerà tutte le celle che fanno riferimento al foglio. Per disattivare il calcolo automatico usare il seguente comando all'inizio della macro:
Application.Calculation = xlCalculationManual
Se è necessario ricalcolare i valori mentre la macro è in esecuzione, è possibile utilizzare
Worksheets ("Foglio1").Calculate
per ricalcolare solo un foglio specifico e
Range ("A1:A25").Calculate
per ricalcolare uno specifico intervallo.
Quando la macro è terminata, riattivare il calcolo automatico:
Application.Calculation = xlCalculationAutomatic - Disattivare gli aggiornamenti dello schermo
Ogni volta che VBA scrive i dati nel foglio viene aggiornata l'immagine sullo schermo, si può disattivare il refresh tramite
Application.ScreenUpdating = FALSE
Al termine della macro è possibile attivare gli aggiornamenti dello schermo con
Application.ScreenUpdating = TRUE - Usare VbNullString
La costante vbNullString equivale a una stringa nulla così come le doppie virgolette ("") rappresentano una stringa vuota. Queste ultime sono però più lente e occupano più memoria rispetto a vbNullString.
Dim strg As String
strg=vbNullString ‘anziché strg=””
MsgBox strg - Evitare il copia e incolla
Le funzioni di Copia e Incolla (o PasteSpecial) sono lente, specialmente tra fogli diversi. Anziché
Foglio1.Range(A1:A100).Copy
Foglio2.Range(“B1”).PasteSpecial
Application.CutCopyMode=False ‘Cancella appunti
utilizzare
Foglio1.Range(“A1:A100”).Copy Destination:=Foglio2.Range(“B1”) - Usare With ... End With
invece di ripetere il riferimento all'oggetto - Aggiungere la gestione degli errori
a procedure o funzioni che usano le variabili oggetto (quelle che si assegnano con Set).
Dim Foglio As Worksheet
Set Foglio = Foglio1 ‘Imposta la variabile oggetto
… ‘Codice
Set Foglio = Nothing ‘Rilascio memoria - Usare con parsimonia le istruzioni condizionali
Ad esempio:
x = Range(“B2”).Value
If x > 10 Then
a = True
Else
a = False
End If
MsgBox a
diventa
x = Range(“B2”).Value
a = (x > 10)
MsgBox a - Non selezionare i fogli di lavoro se non necessario
Evitare
Worksheets ("Foglio1").Select
var = Cells (1, 1)
e utilizzare invece
var = Worksheets ("Foglio1").Cells (1,1)
Macro Excel con riferimenti relativi e riferimenti assoluti (Video)
Conclusioni
La registrazione di una macro può essere usata solo per i codici semplici e non per procedure complesse perché le Sub scritte di propria mano sono molto più potenti e veloci, ma nonostante i limiti (assenza di variabili, cicli, istruzioni condizionali, ecc.), le macro registrate risultano a volte pratiche per vedere i comandi usati ed eventualmente riciclarli nelle proprie procedure, ciò non sempre è possibile specialmente per le funzioni.
Normalmente chi usa VBA negli applicativi Microsoft Office, ma anche chi lavora con altri codici di programmazione in differenti ambiti, tende a crearsi una libreria di listati utili (ad esempio memorizzandoli su Excel stesso o su un documento Word) che, con il copia e incolla, ricicla all’occasione.
Nulla vieta quindi di raggruppare in uno o più moduli le decine di spezzoni di codici VBA che si trovano in Rete e crearsi la propria libreria personale. La qual cosa è utilissima in quanto saper padroneggiare il linguaggio VBA permette di avere davanti scenari sorprendenti perché sia ha la facoltà di personalizzare al massimo Microsoft Excel, facendogli eseguire cose che non sarebbe in grado di fare senza utilizzare il VBA, ad esempio ordinare i fogli in senso alfabetico con un semplice clic.
Il video all'inizio della pagina ti permette di seguire la creazione di una macro un po' più sofisticata di quella descritta in questo articolo.
Se Registrare una macro in Microsoft Excel ti è piaciuto, condividi l'articolo!
Per saperne di più su Microsoft Excel potrebbero interessarti i video corsi Excel o questi libri: