Come registrare una macro in Excel: una guida passo passo

Anche se sei un principiante assoluto nel mondo di Excel VBA, puoi facilmente registrare una macro e automatizzare parte del tuo lavoro.

In questa guida dettagliata, tratterò tutto ciò che è necessario sapere per iniziare a registrare e utilizzare le macro in Excel.

Se sei interessato a imparare VBA nel modo più semplice, dai un'occhiata a my Formazione online su VBA di Excel.

Che cos'è una macro?

Se sei un principiante di VBA, lascia che ti dica prima che cos'è una macro: dopotutto, continuerò a usare questo termine nell'intero tutorial.

Una macro è un codice scritto in VBA (Visual Basic for Applications) che consente di eseguire un blocco di codice ogni volta che viene eseguito.

Spesso troverai persone (incluso me stesso) che fanno riferimento a un codice VBA come macro, sia che sia stato generato utilizzando un registratore di macro o che sia stato scritto manualmente.

Quando registri una macro, Excel osserva attentamente i passaggi che stai eseguendo e lo annota in una lingua che comprende, ovvero VBA.

E poiché Excel è davvero un ottimo strumento per prendere appunti, crea un codice molto dettagliato (come vedremo più avanti in questo tutorial).

Ora, quando interrompi la registrazione, salvi la macro ed eseguila, Excel torna semplicemente al codice VBA che ha generato e segue esattamente gli stessi passaggi.

Ciò significa che anche se non sai nulla di VBA, puoi automatizzare alcune attività semplicemente lasciando che Excel registri i tuoi passaggi una volta e poi li riutilizzi in seguito.

Ora tuffiamoci e vediamo come registrare una macro in Excel.

Ottenere la scheda Sviluppatore nella barra multifunzione

Il primo passo per registrare una macro è ottenere la scheda Sviluppatore nella barra multifunzione.

Se vedi già la scheda sviluppatore nella barra multifunzione, vai alla sezione successiva, altrimenti segui i passaggi seguenti:

  • Fare clic con il pulsante destro del mouse su una delle schede esistenti nella barra multifunzione e fare clic sull'opzione "Personalizza barra multifunzione". Si aprirà la finestra di dialogo Opzioni di Excel.
  • Nella finestra di dialogo Opzioni di Excel, avrai le opzioni Personalizza la barra multifunzione. A destra, nel riquadro Schede principali, seleziona l'opzione Sviluppatore.
  • Fare clic su OK.

I passaggi precedenti renderebbero disponibile la scheda Sviluppatore nell'area della barra multifunzione.

Registrazione di una macro in Excel

Ora che abbiamo tutto a posto, impariamo come registrare una macro in Excel.

Registriamo una macro molto semplice, che seleziona una cella e inserisce il testo "Excel" al suo interno. Sto usando il testo "Excel" durante la registrazione di questa macro, ma sentiti libero di inserire il tuo nome o qualsiasi altro testo che ti piace.

Ecco i passaggi per registrare questa macro:

  1. Fare clic sulla scheda Sviluppatore.
  2. Nel gruppo Codice, fare clic sul pulsante Macro. Si aprirà la finestra di dialogo "Registra macro".
  3. Nella finestra di dialogo Registra macro, inserisci un nome per la macro. Sto usando il nome Inserire il testo. Ci sono alcune condizioni di denominazione che è necessario seguire quando si nomina una macro. Ad esempio, non è possibile utilizzare spazi intermedi. Di solito preferisco mantenere i miei nomi macro come una singola parola, con parti diverse con un primo alfabeto maiuscolo. Puoi anche utilizzare il carattere di sottolineatura per separare due parole, ad esempio Invio_Testo.
  4. (Passaggio facoltativo) Se lo desideri, puoi assegnare una scorciatoia da tastiera. In questo caso, utilizzeremo la scorciatoia Control + Shift + N. Ricorda che la scorciatoia che assegni qui sovrascriverà qualsiasi scorciatoia esistente nella tua cartella di lavoro. Ad esempio, se assegni la scorciatoia Control + S, non sarai in grado di usarla per salvare la cartella di lavoro (invece, ogni volta che la usi, eseguirà la macro).
  5. Nell'opzione "Memorizza macro in", assicurati che "Questa cartella di lavoro" sia selezionata. Questo passaggio garantisce che la macro faccia parte della cartella di lavoro. Sarà lì quando lo salvi e lo riapri di nuovo, o anche se lo condividi con qualcuno.
  6. (Passaggio facoltativo) Immettere una descrizione. Di solito non lo faccio, ma se sei estremamente organizzato, potresti voler aggiungere di cosa tratta la macro.
  7. Fare clic su OK. Non appena fai clic su OK, inizia a registrare le tue azioni in Excel. Puoi vedere il pulsante "Interrompi registrazione" nella scheda Sviluppatore, che indica che la registrazione della macro è in corso.
  8. Seleziona la cella A2.
  9. Inserisci il testo Eccellere (oppure puoi usare il tuo nome).
  10. Premi il tasto Invio. Questo selezionerà la cella A3.
  11. Fare clic sul pulsante Interrompi registrazione nella scheda Sviluppatore.

Congratulazioni!

Hai appena registrato la tua prima macro in Excel. Non sei più una macro vergine.

Sebbene la macro non faccia nulla di utile, servirà allo scopo di spiegare come funziona un registratore di macro in Excel.

Ora andiamo avanti e testiamo questa macro.

Seguire i passaggi seguenti per testare la macro:

  1. Elimina il testo nella cella A2. Questo serve per verificare se la macro inserisce o meno il testo nella cella A2.
  2. Seleziona qualsiasi cella, diversa da A2. Questo serve per verificare se la macro seleziona o meno la cella A2.
  3. Fare clic sulla scheda Sviluppatore.
  4. Nel gruppo Codice, fare clic sul pulsante Macro.
  5. Nella finestra di dialogo Macro, fare clic sulla macro Nome - EnterText.
  6. Fare clic sul pulsante Esegui.

Noterai che non appena fai clic sul pulsante Esegui, il testo "Excel" viene inserito nella cella A2 e la cella A3 viene selezionata.

Ora, tutto questo può accadere in una frazione di secondo, ma in realtà la macro, proprio come un elfo obbediente, ha seguito i passaggi esatti che hai mostrato durante la registrazione della macro.

Quindi la macro seleziona prima la cella A2, quindi inserisce il testo Eccellere in esso, quindi seleziona la cella A3.

Nota: puoi anche eseguire la macro usando la scorciatoia da tastiera Ctrl + Maiusc + N (tieni premuti i tasti Ctrl e Maiusc, quindi premi il tasto N). Questa è la stessa scorciatoia da tastiera che abbiamo assegnato alla macro durante la registrazione.

Cosa fa la registrazione di una macro nel backend

Ora andiamo al backend di Excel, l'editor VB, e vediamo cosa fa realmente la registrazione di una macro.

Ecco i passaggi per aprire l'editor VB in Excel:

  1. Fare clic sulla scheda Sviluppatore.
  2. Nel gruppo Codice, fare clic sul pulsante Visual Basic.

Oppure puoi usare la scorciatoia da tastiera - ALT + F11 (tieni premuto il tasto ALT e premi F11), invece dei due passaggi precedenti. Questo collegamento apre anche lo stesso editor VB.

Ora, se vedi l'editor VB per la prima volta, non essere sopraffatto.

Lascia che ti faccia rapidamente familiarizzare con l'anatomia di VB Editor.

  • Barra dei menu: Qui è dove hai tutte le opzioni di VB Editor. Considera questo come il nastro di VBA. Contiene comandi che puoi usare mentre lavori con VB Editor.
  • Barra degli strumenti - È come la barra di accesso rapido dell'editor VB. Viene fornito con alcune opzioni utili e puoi aggiungerne altre. Il suo vantaggio è che un'opzione nella barra degli strumenti è a portata di clic.
  • Finestra Esplora progetto - Qui è dove Excel elenca tutte le cartelle di lavoro e tutti gli oggetti in ogni cartella di lavoro. Ad esempio, se abbiamo una cartella di lavoro con 3 fogli di lavoro, verrà visualizzata in Esplora progetti. Ci sono alcuni oggetti aggiuntivi qui come moduli, moduli utente e moduli di classe.
  • Finestra del codice - Qui è dove viene registrato o scritto il codice VBA. C'è una finestra del codice per ogni oggetto elencato in Esplora progetti, come fogli di lavoro, cartelle di lavoro, moduli, ecc. Vedremo più avanti in questo tutorial che la macro registrata va nella finestra del codice di un modulo.
  • Finestra delle proprietà - Puoi vedere le proprietà di ogni oggetto in questa finestra. Uso spesso questa finestra per denominare gli oggetti o modificare le proprietà nascoste. Potresti non vedere questa finestra quando apri l'editor VB. Per mostrarlo, fare clic sulla scheda Visualizza e selezionare Finestra Proprietà.
  • Finestra immediata - Uso spesso la finestra immediata durante la scrittura del codice. È utile quando vuoi testare alcune istruzioni o durante il debug. Potrebbe non essere visibile per impostazione predefinita e puoi farlo apparire facendo clic sulla scheda Visualizza e selezionando l'opzione Finestra immediata.

Quando abbiamo registrato la macro… Inserire il testo, sono accadute le seguenti cose nell'editor VB:

  • È stato inserito un nuovo modulo.
  • È stata registrata una macro con il nome che abbiamo specificato - Inserire il testo
  • Il codice è stato scritto nella finestra del codice del modulo.

Quindi, se fai doppio clic sul modulo (Modulo 1 in questo caso), apparirà una finestra di codice come mostrato di seguito.

Ecco il codice che il registratore di macro ci ha fornito:

Sub EnterText() ' ' Macro EnterText ' ' Scorciatoia da tastiera: Ctrl+Shift+N ' Intervallo("A2").Seleziona ActiveCell.FormulaR1C1 = Intervallo "Excel"("A3").Seleziona End Sub

In VBA, qualsiasi riga che segue il (segno di apostrofo) non viene eseguito. È un commento inserito solo a scopo informativo. Se rimuovi le prime cinque righe di questo codice, la macro funzionerà ancora come previsto.

Ora lascia che ti spieghi rapidamente cosa fa ogni riga di codice:

Il codice inizia con Sub seguito dal nome della macro e da parentesi vuote. Sub è l'abbreviazione di Subroutine. Ogni subroutine (chiamata anche Procedura) in VBA inizia con Sub e termina con End Sub.

  • Intervallo(“A2”).Selezionare - Questa riga seleziona la cella A2.
  • ActiveCell.FormulaR1C1 = “Eccellere” - questa riga inserisce il testo Excel nella cella attiva. Poiché abbiamo selezionato A2 come primo passaggio, diventa la nostra cella attiva.
  • Intervallo(“A3”).Selezionare - Questo seleziona la cella A3. Ciò accade quando premiamo il tasto Invio dopo aver inserito il testo, il cui risultato è stato selezionare la cella A3.

Spero che ormai tu abbia una conoscenza di base di come registrare una macro in Excel.

Tieni presente che il codice scritto da un registratore di macro non è affatto un codice efficiente.

Il registratore di macro a volte aggiunge un sacco di lanugine al codice che a volte non è necessario. Ma questo non significa che non sia utile. Per chi sta imparando VBA, un registratore di macro può essere un ottimo modo per analizzare come funzionano le cose in VBA.

Registrazione macro assoluta vs relativa

Conosci già i riferimenti assoluti e relativi in ​​Excel … giusto?

In caso contrario, leggi prima questo tutorial sui riferimenti.

Leggilo? Andiamo avanti.

Vedremo più avanti in questa sezione come registrare le macro nei riferimenti assoluti e relativi. Ma prima, lasciatemi riassumere rapidamente la differenza tra riferimento assoluto e relativo in VBA (nel caso in cui tu fossi pigro e non avessi letto il link che ho dato poche righe fa):

Se utilizzi un'opzione di riferimento assoluto per registrare una macro, il codice VBA farebbe sempre riferimento alle stesse celle che hai utilizzato. Ad esempio, se selezioni la cella A2, inserisci il testo Excel e premi Invio, ogni volta, indipendentemente da dove ti trovi nel foglio di lavoro e indipendentemente dalla cella selezionata, il tuo codice selezionerà prima la cella A2, inserisci il testo Excel e quindi spostati nella cella A3.

Se utilizzi un'opzione di riferimento relativo per registrare una macro, VBA non codifica i riferimenti di cella. Piuttosto, si concentrerebbe sul movimento rispetto alla cellula attiva. Ad esempio, supponiamo di avere già selezionata la cella A1 e di iniziare a registrare la macro nella relativa modalità di riferimento.

Ora selezioni la cella A2, inserisci il testo Excel e premi il tasto Invio. Ora, quando esegui questa macro, non tornerà alla cella A2, invece, si sposterà rispetto alla cella attiva. Ad esempio, se la cella K3 è selezionata, si sposterà su K4, inserirà il testo Excel e infine selezionerà la cella K5.

Ora lascia che ti spieghi come registrare una macro in modalità riferimenti relativi:

  1. Seleziona la cella A1.
  2. Fare clic sulla scheda Sviluppatore.
  3. Nel gruppo Codice, fare clic sul pulsante "Usa riferimenti relativi". Diventerà verde, indicando che è acceso.
  4. Fare clic sul pulsante Registra macro.
  5. Nella finestra di dialogo Registra macro, inserisci un nome per la macro. Sto usando il nome EnterTextRelRef.
  6. Nell'opzione Memorizza macro in, assicurati che "Questa cartella di lavoro" sia selezionata.
  7. Fare clic su OK.
  8. Seleziona la cella A2.
  9. Inserisci il testo Eccellere (oppure puoi inserire il tuo nome).
  10. Premi il tasto Invio. Questo porterà il cursore sulla cella A3.
  11. Fare clic sul pulsante Interrompi registrazione nella scheda Sviluppatore.

Ciò registrerebbe la macro nella modalità di riferimento relativa.

Ora fai questo.

  1. Seleziona qualsiasi cella (diversa da A1).
  2. Fare clic sulla scheda Sviluppatore.
  3. Nel gruppo Codice, fare clic sul pulsante Macro.
  4. Nella finestra di dialogo Macro, fare clic sulla macro Nome - EnterTextRelRef.
  5. Fare clic sul pulsante Esegui.

Che succede? Il cursore è tornato alla cella A3.

non sarebbe - perché hai registrato la macro nella relativa modalità di riferimento. Quindi il cursore si sposterebbe rispetto alla cella attiva. Ad esempio, se lo fai quando è selezionata la cella K3, inserirà il testo Excel è cella K4 e finirà per selezionare la cella K5.

Ecco il codice che viene registrato nel backend (finestra del codice del modulo VB Editor):

Sub EnterTextRelRef() ' ' EnterTextRelRef Macro ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1"). Seleziona Fine Sotto

Nota che l'intero codice non fa riferimento alle celle K3 o K4 da nessuna parte. Utilizza invece Activecell per fare riferimento alla cella selezionata e Offset per spostarsi rispetto alla cella attiva.

Non preoccuparti della parte Range ("A1") che ha il codice. È uno di quei codici non necessari aggiunti dal registratore di macro che non servono a nulla e possono essere rimossi. Il codice funzionerebbe bene senza di esso.

Il pulsante "Usa riferimento relativo" nella scheda Sviluppatore è un pulsante di attivazione/disattivazione. Puoi disattivarlo (e tornare al riferimento assoluto) facendo clic su di esso.

Cosa non può fare un registratore di macro

Il registratore di macro è ottimo per seguirti in Excel e registrare i tuoi passaggi esatti, ma potrebbe non riuscire quando ne hai bisogno per fare di più.

  • Non puoi eseguire un codice senza selezionare l'oggetto. Se vuoi che il registratore di macro vada al foglio di lavoro successivo ed evidenzi tutte le celle riempite nella colonna A, senza lasciare il foglio di lavoro corrente, non sarà in grado di farlo. È perché se ti chiedo di farlo, nemmeno tu sarai in grado di farlo (senza lasciare il foglio corrente). E se non puoi farlo da solo, in che modo il registratore di macro catturerà le tue azioni. In questi casi, devi andare manualmente e creare/modificare il codice.
  • Non puoi creare una funzione personalizzata con un registratore di macro. Con VBA, puoi creare funzioni personalizzate che puoi utilizzare nel foglio di lavoro come funzioni normali. Puoi crearlo scrivendo il codice manualmente.
  • Non puoi eseguire codici basati su Eventi: In VBA puoi utilizzare molti eventi, come l'apertura di una cartella di lavoro, l'aggiunta di un foglio di lavoro, il doppio clic su una cella, ecc., Per eseguire un codice associato a quell'evento. Puoi usare un registratore di macro per farlo.
  • Non puoi creare loop con un registratore di macro. Quando inserisci manualmente il codice, puoi sfruttare la potenza dei loop in VBA (come For Next, For Each Next, Do While, Do fino a). Ma non puoi farlo quando registri una macro.
  • Non puoi analizzare le condizioni: È possibile verificare le condizioni all'interno del codice utilizzando il registratore di macro. Se si scrive un codice VBA manualmente, è possibile utilizzare le istruzioni IF Then Else per analizzare una condizione ed eseguire un codice se vero (o un altro codice se falso).
  • Non puoi passare argomenti in una procedura macro: Quando registri una macro, non avrà mai alcun argomento. Una subroutine può accettare argomenti di input che possono essere utilizzati all'interno della macro per eseguire un'attività. Durante la registrazione di una macro, questa operazione non può essere eseguita poiché le macro registrate sono indipendenti e non sono collegate ad altre macro esistenti.

Estensioni di file con attivazione macro

Quando si registra una macro o si scrive manualmente il codice VBA in Excel, è necessario salvare il file con un'estensione di file abilitata per le macro (.xlsm).

Prima di Excel 2007, esisteva un unico formato di file che era sufficiente: .xls.

Ma dal 2007 in poi, .xlsx è stato introdotto come estensione file standard. I file salvati come .xlsx non possono contenere una macro al suo interno. Quindi, se hai un file con estensione .xlsx e registri/scrivi una macro e la salvi, ti avviserà di salvarlo in un formato abilitato per le macro e ti mostrerà una finestra di dialogo (come mostrato di seguito):

Se selezioni No, Excel ti consente di salvarlo in un formato abilitato per le macro. Ma se fai clic su Sì, Excel rimuoverà automaticamente tutto il codice dalla cartella di lavoro e lo salverà come cartella di lavoro .xlsx.

Quindi, se hai una macro nella tua cartella di lavoro, devi salvarla nel formato .xlsm per mantenere quella macro.

Diversi modi per eseguire una macro in Excel

Finora, abbiamo visto solo un modo per eseguire una macro in Excel, ovvero utilizzare la finestra di dialogo Macro.

Ma ci sono diversi modi per eseguire le macro.

  1. Esegui una macro dalla barra multifunzione (scheda Sviluppatore)
  2. Utilizzo di una scorciatoia da tastiera (che devi assegnare)
  3. Assegna la macro a una forma
  4. Assegna la macro a un pulsante
  5. Esegui una macro dall'editor VB

Conclusione: registra una macro quando è bloccata

Ho già detto che un registratore di macro è uno strumento utile per chiunque lavori con VBA in Excel.

Quando usi il registratore di macro alcune volte, noterai che sputa molto codice non necessario. Tuttavia, è comunque utile e ti dà alcune idee su dove iniziare. Ad esempio, se ti chiedo di filtrare una colonna di celle utilizzando VBA e non hai idea di quale sia la sintassi, puoi registrare rapidamente una macro e controllare il codice.

Un registratore di macro è uno strumento indispensabile e anche dopo anni di esperienza di codifica VBA alle spalle, faccio spesso ricorso al registratore di macro per chiedere aiuto.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave