Registrare una macro in Microsoft Excel

Esegui una serie di eventi ripetitivi quando necessario

Autore: Andrea Pacchiarotti
Ultimo aggiornamento: 04 Gennaio 2022
Categoria: Microsoft Office Excel Macro

Iscriviti gratuitamente al mio canale YouTube su Excel!
Ti serve un corso Excel? Cliccami ora!
Microsoft Excel e Business Intelligence
Registrare una macro in Microsoft Excel

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. Vediamo dunque le procedure utili all'esecuzione di una macro.

Registrare una macro in Microsoft Excel

Sommario Registrare una macro in Microsoft Excel

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:

è preferibile scegliere quest’ultima impostazione se si è sicuri della provenienza dei file ricevuti.

Registrare una 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 (Visual Basic for Application). L’icona si trova sia nella scheda Visualizza che Sviluppo e si chiama Registra macro; cliccandola si aprirà una finestra che richiede:

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)

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:

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 una macro

È possibile eseguire la macro:

Excel (VBA): velocizzare esecuzione macro

  1. Non registrare le macro
  2. Scrivere un codice snello
  3. Dichiarare le variabili correttamente e specificarne il tipo
  4. Disattivare il calcolo automatico
  5. Disattivare gli aggiornamenti dello schermo
  6. Usare VbNullString
  7. Evitare il copia e incolla
  8. Usare With ... End With
  9. Aggiungere la gestione degli errori
  10. Usare con parsimonia le istruzioni condizionali
  11. Non selezionare i fogli di lavoro se non necessario

Usare VBA può causare rallentamenti all’applicativo. Ecco alcune semplici regole per migliorare l'efficienza

  1. Non registrare le macro
    perché scrivono molto più codice del necessario
  2. Scrivere un codice snello
    in modo da ridurre i tempi di esecuzione, ad esempio scrivendo più istruzioni in una singola riga
  3. Dichiarare le variabili correttamente e specificarne il tipo
    per evitare che l'applicativo gli assegni un tipo Variant con inutile spreco di spazio
  4. 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
  5. 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
  6. 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
  7. 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”)
  8. Usare With ... End With
    invece di ripetere il riferimento all'oggetto
  9. 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
  10. 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
  11. 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.


Per saperne di più su Microsoft Excel potrebbero interessarti i video corsi Excel o questi libri:

Se vuoi approfondire alcuni dei temi trattati, visita la pagina con le mie pubblicazioni cartacee e online

Se l'articolo ti è piaciuto, condividilo!

Segui l'hashtag #AndreaPacchiarotti