Come registrare una macro in excel?
PUNTI CHIAVE
- Registrare una macro significa registrare le azioni eseguite in Excel.
- È necessario utilizzare il registratore di macro per registrare una macro.
- Il registratore di macro genera il codice sul retro mentre esegui l’attività.
- In Excel non è possibile mettere in pausa durante la registrazione di una macro.
- Il registratore di macro non crea un codice perfetto, quindi assicurati di ripulire il codice dopo la registrazione.
Questa guida ti aiuterà ad apprendere tutti gli aspetti della registrazione di una macro. Imparerai anche come ripulire il codice dopo averlo salvato.
Quindi iniziamo.
Cos’è il registratore di macro?
Registratore macro di Excel è uno strumento in grado di registrare (non tutte) le azioni eseguite in Excel e generare codice per esse. Esegui un’attività specifica una volta e genera una macro per quella, e la volta successiva invece di eseguire quell’attività manualmente, devi eseguire quel codice.
Pensa ad una videocamera, funziona così e genera codice per l’attività che stai svolgendo.
Dovresti capire che potrebbero esserci momenti in cui un registratore di macro non può fornire il codice. Tuttavia, è comunque un ottimo modo per imparare il codice se non lo conosci.
Puoi trovare il pulsante del registratore macro nella scheda sviluppatore .
L’utilizzo di VBA per la programmazione in Excel è una delle competenze avanzate in Excel e per iniziare con VBA è necessario essere esperti nella registrazione delle macro.
Pianificazione prima di registrare una macro
Se vuoi registrare un video, devi prima fare un po’ di pianificazione, come creare una sceneggiatura, avere luci adeguate, ecc.
Allo stesso modo, la registrazione di una macro richiede una certa pianificazione.
Il punto è che non vuoi ottenere il codice per l’attività che non vuoi eseguire mentre usi nuovamente la macro registrata.
Il modo migliore per farlo è scrivere i passaggi che devi completare e poi attenervisi durante la registrazione.
Qui registreremo una macro che può applicare la seguente formattazione alla cella selezionata:
- Colore carattere: rosso
- Dimensione carattere: 12
- Stile carattere: Verdena
- Testo del carattere: grassetto
Come ho detto, la pianificazione è essenziale e prima di registrare questa macro c’è una cosa di cui dobbiamo occuparci, ovvero selezionare la cella di destinazione prima di iniziare la registrazione.
Come ho detto, la pianificazione è essenziale e prima di registrare questa macro c’è una cosa di cui dobbiamo occuparci, ovvero selezionare la cella di destinazione prima di iniziare la registrazione.
Il motivo è che se selezioniamo una cella durante la registrazione della macro, verrà salvata anche quella selezione.
Pertanto, quando esegui nuovamente questa macro, selezionerà quella particolare cella per applicarvi tutta la formattazione. Ma quello che vogliamo è applicare la formattazione sulla cella che è attiva (che è selezionata).
Passaggi per registrare una macro utilizzando il registratore di macro
Per SALVARE una MACRO in Excel, puoi seguire i seguenti passaggi:
- Innanzitutto, seleziona la cella A4 (questa è la cella in cui applicheremo la formattazione e registreremo la nostra macro).
- Fatto ciò, vai nella “scheda Sviluppatore” e, prima di premere il pulsante “SALVA”, abilita il relativo riferimento (su questo ne parleremo più approfonditamente tra qualche minuto).
- Premi il pulsante di registrazione.
- E nel momento in cui fai clic su di esso, verrà visualizzata una finestra di dialogo per inserire alcuni dettagli sulla macro che stai per registrare (sì, dobbiamo compilarla).
- Nome della macro: “HighlightCell”.
- Tasto di scelta rapida: premi Maiusc+H per impostare la scorciatoia da tastiera Control+Maiusc+H.
- Memorizza macro in: seleziona Raccoglitore macro personale.
- Descrizione: questa macro applica un colore rosso, dimensione carattere 12, stile carattere Verdana e rende il carattere in grassetto.
- Infine, fai clic su OK.
- A questo punto Excel procede a salvare il tutto (è possibile vedere l’icona sulla barra di stato che dice “Una macro è in registrazione, clicca per interrompere la registrazione”).
- Quindi ora applica le quattro formattazioni che abbiamo deciso.
- Colore carattere: rosso
- Dimensione carattere: 12
- Stile carattere: Verdena
- Testo del carattere: grassetto
- Dopo averlo fatto, torna alla scheda sviluppatore e fai clic su “Interrompi registrazione” oppure puoi anche interrompere la registrazione dalla barra di stato dove dice “fai clic qui per interrompere la registrazione”. registrazione”.
Congratulazioni! L’hai fatto e a questo punto hai una macro salvata nella tua cartella di lavoro, ma ora la prossima cosa è capirla.
Come il registratore macro genera il codice
Il registratore di macro genera un codice per te mentre svolgi le attività.
Per capirlo, devi prima vedere il codice. Quindi, per fare ciò, apri l’ editor di Visual Basic , vai alla scheda Sviluppatore ➜ Visual Basic Editor.
E poi apri il modulo1 dove hai memorizzato il tuo codice.
Nella finestra del codice puoi vedere l’intero codice generato dal registratore di macro insieme a tutti i dettagli che hai inserito.
Come puoi vedere, il nome della macro, il tasto di scelta rapida e la descrizione sono presenti prima del codice.
Ora capiamo il codice (come ho detto prima, il registratore di macro non crea un codice perfetto, quindi devi pulirlo ogni volta, e lo impareremo nella parte successiva).
Hai completato tutte e quattro le attività e il registratore di macro ha generato il codice in quattro parti.
- Nella prima parte, il codice dice che il colore del carattere della cella selezionata dovrebbe essere rosso e per questo utilizza un valore numerico.
- La seconda parte del codice indica che la dimensione del carattere delle celle selezionate dovrebbe essere “12”.
- E nella terza parte si dice che lo stile del carattere dovrebbe essere “Verdana”.
- Infine, nella quarta parte si dice che il carattere della cella selezionata dovrebbe essere in grassetto.
Macro registrata pulita
A questo punto hai registrato la tua prima macro e sai come viene generato questo codice. Ma devi ripulire il codice che hai nel modulo.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .TintAndShade = 0 End With With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNo .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Selection.Font .Name = "Verdana" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True End Sub
Se guardi da vicino, è molto più lungo delle attività che può svolgere. In questo codice sono incluse molte proprietà che non sono obbligatorie.
Non solo con questo codice, ogni volta che registri una macro devi ripulirla ogni volta.
Ma prima di iniziare a ripulire quel codice, devi ricordare le quattro attività che hai svolto per le quali devi avere il codice nel tuo modulo:
- Colore carattere: rosso
- Dimensione carattere: 12
- Stile carattere: Verdena
- Testo del carattere: grassetto
Identifichiamo le righe di codice che svolgono queste quattro attività.
Ora hai identificato le righe di codice che eseguono le attività effettive che hai eseguito e abbiamo anche questo codice in quattro parti.
È ora di ripulire il codice e rimuovere tutte le righe indesiderate. Seguire i passaggi seguenti.
- Nella PRIMA parte è necessario il codice di riga che applica il colore del carattere ROSSO, quindi la proprietà “TintAndShade” non lo richiede.
- Ora nella SECONDA parte abbiamo bisogno della dimensione del carattere, non di tutte le altre proprietà, quindi rimuovile.
- Dopodiché, nella TERZA parte, dobbiamo avere la proprietà del nome del carattere, quindi rimuovi tutte le altre proprietà.
- Nella parte QUATTRO, hai solo una riga di codice, che serve a rendere il carattere in grassetto.
A questo punto il codice appare così, che è molto inferiore al codice generato dal registratore di macro.
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 End With With Selection.Font .Size = 12 End With With Selection.Font .Name = "Verdana" End With Selection.Font.Bold = True End Sub
Ma puoi ancora fare di più.
Se osservi attentamente il codice, viene utilizzato “With Selection.Font” quattro volte, ma poiché ti riferisci allo stesso oggetto per tutte e quattro le proprietà, puoi utilizzarlo una volta.
Quindi il codice finale sarà:
Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .Name = "Verdana" .Size = 12 .Bold = True End With End Sub
Quando esegui questo codice, eseguirà le stesse attività che hai registrato.
Cos’hai fatto?
Nel nuovo codice hai solo righe di codice che eseguono le attività di cui hai bisogno.
Il punto da capire qui è che con ogni oggetto ci sono sempre delle proprietà e quando il registratore di macro registra, aggiunge tutte quelle proprietà con quell’oggetto anche se non le usi.
Ecco perché è necessario rimuovere tutte queste proprietà dal codice.
E l’altra cosa è che anche se usi un solo oggetto nel tuo codice, il registratore di macro fa riferimento ad esso ancora e ancora quando esegui attività diverse ed è per questo che hai utilizzato “Con selezione. Carattere” una volta e hai aggiunto tutte le proprietà sottostanti .
In tutte le situazioni, per ripulire qualsiasi codice generato dal registratore di macro, è necessario identificare le righe di codice effettive che eseguono le attività necessarie e rimuovere il resto.
Quando si pulisce il codice macro salvato, il modo migliore è eseguire il debug del codice passo dopo passo.
Leggilo
- Apri l’editor VBA e la finestra di Excel fianco a fianco, quindi premi F8 per eseguire il codice passo dopo passo.
- Poiché hai la finestra di Excel aperta lateralmente, puoi vedere quale riga di codice sta eseguendo l’attività.
- E una volta identificato il codice che ti serve, puoi eliminare il codice che non è necessario.
Assegna un nome a una macro
Ogni volta che registri una macro, è necessario darle un nome, ma ci sono alcune regole a cui un nome deve conformarsi:
- Il nome di una macro può contenere fino a 80 caratteri.
- Non è possibile utilizzare spazi, punteggiatura o caratteri speciali.
- Deve iniziare con una lettera.
Oltre a queste regole, ci sono alcune parole che VBA vieta di utilizzare come nome.
D’altra parte, è essenziale utilizzare un nome significativo invece di avere nomi predefiniti come Macro1 o Test1.
Poiché non è possibile utilizzare spazi nel nome di una macro, è possibile utilizzare un carattere di sottolineatura o scrivere in maiuscolo la prima lettera di ogni parola per aumentare la leggibilità.
Memorizzazione della macro registrata
Prima di registrare una macro, devi specificare dove vuoi salvarla e hai tre opzioni per farlo:
- Nuova cartella di lavoro : puoi selezionare questa opzione se desideri salvare la macro in una nuova cartella di lavoro.
- Questa cartella di lavoro : selezionando questa opzione, è possibile salvare la macro nella cartella di lavoro corrente.
- Cartella di lavoro macro personale : con questa opzione è possibile accedere alle macro da tutte le cartelle di lavoro.
Riferimento relativo
Durante la registrazione della macro sopra, ti ho detto di selezionare “Usa riferimenti relativi” prima di premere il pulsante “Avvia registrazione”.
In Excel, quando si registra una macro, Excel utilizza “Riferimento assoluto” per impostazione predefinita. Tuttavia, è possibile modificarlo prima di registrare una macro.
Il punto è che l’utilizzo dei riferimenti relativi è fondamentale se si desidera che una macro esegua l’attività registrata in qualsiasi punto del foglio di lavoro.
Per farti capire la differenza tra le due modalità di riferimento, voglio che tu registri l’attività in due modi diversi.
- Per prima cosa seleziona la cella A1 e inizia a registrare una macro (senza abilitare “Usa riferimento relativo”), quindi seleziona la cella E5 .
- Otterrai il codice seguente tramite il registratore di macro:
Sub AbsoluteReferenceMacro() Range("E5").Select End Sub
- Ancora una volta, seleziona la cella A1, abilita “Utilizza riferimento relativo” e registra la stessa attività (seleziona la cella E5).
- Ma al momento, il codice che hai ottenuto è diverso:
Sub RelativeReferenceMacro() ActiveCell.Offset(4, 4).Range(“A1”).Select End Sub
Hai registrato questi due codici svolgendo la stessa attività ma utilizzando modalità di riferimento diverse. GIUSTO?
Il primo codice macro è abbastanza semplice da comprendere; dice di selezionare la cella E5.
E se esegui questa macro, fa la stessa cosa, ovvero seleziona la cella E5, qualunque sia la cella che hai selezionato a questo punto.
D’altra parte, il secondo codice macro dice qualcos’altro e se selezioni un’altra cella prima di eseguire questo codice, selezionerà una cella diversa.
Per quello?
Quando hai registrato questa macro, la cella attiva era A1, quindi hai selezionato E5, che si trova quattro celle in basso e quattro celle a destra della cella A1.
Ora, poiché hai salvato questa macro con un riferimento relativo, selezionerà sempre la cella, che si trova quattro celle sotto e quattro celle a destra della cella attiva.
Diciamo che se la cella attiva è D4, selezionerà la cella H8, che è quattro celle in basso e quattro celle a destra.
Puoi modificare il riferimento in qualsiasi momento, anche durante la registrazione.
Pausa macro
Sfortunatamente, Excel non ti consente di mettere in pausa una macro durante la registrazione. Questo è possibile in Microsoft Word, ma non in Excel.
Se stai registrando una macro in cui devi eseguire molte attività, è meglio registrarla in più parti in modo che ci siano meno possibilità di errori.
Limitazioni del registratore macro
Sì, il registratore di macro presenta alcune limitazioni. Ci sono molte cose che puoi fare con il codice VBA, ma il registratore macro non può registrare tutte le attività.
- Impossibile creare una funzione personalizzata : VBA consente di creare una funzione personalizzata che è possibile utilizzare nel foglio di lavoro, ma ciò non è possibile durante la registrazione di una macro.
- Impossibile utilizzare le funzioni integrate : VBA ha le sue funzioni ( Funzioni VBA ), ma non è possibile utilizzarle con il registratore macro.
- Impossibile verificare le condizioni : durante la registrazione di una macro, non è possibile utilizzare l’ istruzione VBA IF Then Else per verificare le condizioni.
- Impossibile eseguire il loop : in VBA è possibile utilizzare istruzioni di loop durante la scrittura del codice, ma ciò non è possibile con il registratore di macro.
- Impossibile eseguire attività con l’oggetto : durante la registrazione di una macro, non è possibile eseguire un’azione senza selezionare effettivamente un oggetto. Ad esempio, se desideri mettere in grassetto il testo di una cella particolare, devi prima selezionare quella cella.
Vale la pena utilizzare il registratore di macro?
Posso scommettere che hai questa domanda in mente ed è valida. Permettimi di condividere con te una storia personale per rispondere a questa domanda.
Alcuni anni fa stavo lavorando su del codice VBA per inserire una tabella pivot e in quel momento non ero a conoscenza di tutti gli oggetti che dovevo utilizzare per scrivere questo codice. Quindi quello che ho fatto, ho registrato una macro mentre creavo manualmente una tabella pivot.
Successivamente, ho esaminato questo codice per comprendere l’intero processo coinvolto nell’inserimento di una tabella pivot. Sì, questo codice non era perfetto ma mi ha dato un’idea per scrivere.
Ciò che intendo è che potrebbero esserci situazioni in cui è necessario scrivere il codice e il registratore di macro può aiutarti in quel momento. Il registratore di macro mi ha anche aiutato a scrivere i codici per questo modello di inventario .
Avvolgere
Dovresti concentrarti sui seguenti punti per registrare con successo una macro:
- Definisci la cartella di lavoro in cui salverai la macro e chiuderai tutte le altre cartelle di lavoro.
- Assicurati di selezionare l’oggetto corretto per registrare la macro.
- Assicurati di decidere se utilizzare riferimenti assoluti o relativi prima di salvare la macro.
- Pianifica le azioni che vuoi intraprendere.
Tutorial correlati
Domande frequenti
Si trova nel gruppo Codice nella scheda Sviluppatore.
Puoi vederlo dall’editor di Visual Basic.
Non proprio, devi ripulire questo codice dopo averlo salvato.