Sommario
Esercitazione passo-passo per i principianti per registrare, visualizzare, eseguire e salvare una macro. Imparerete anche alcuni meccanismi interni del funzionamento delle macro in Excel.
Le macro sono un ottimo modo per automatizzare le attività ripetitive in Excel. Se vi ritrovate a fare sempre le stesse cose, registrate le vostre mosse come macro e assegnatele una scorciatoia da tastiera. Ora potete far eseguire automaticamente tutte le azioni registrate con un solo tasto!
Come registrare una macro in Excel
Come altri strumenti VBA, le macro di Excel risiedono nel file Sviluppatore La prima cosa da fare è aggiungere la scheda Sviluppatore alla barra multifunzione di Excel.
Per registrare una macro in Excel, procedete come segue:
- Sul Sviluppatore nella scheda Codice fare clic sul gruppo Macro di registrazione pulsante.
In alternativa, fare clic sul pulsante Macro di registrazione sul lato sinistro della finestra di dialogo Stato bar:
Guarda anche: Come convertire i file Excel in PDFSe si preferisce lavorare con la tastiera anziché con il mouse, premere la seguente sequenza di tasti Alt , L , R (uno alla volta, non tutti i tasti alla volta).
- Nel Macro di registrazione Nella finestra di dialogo visualizzata, configurare i parametri principali della macro:
- Nel Macro nome Cercate di dare un nome significativo e descrittivo alla vostra macro, in modo da poterla ritrovare rapidamente nell'elenco.
Nei nomi delle macro si possono usare lettere, numeri e trattini bassi; il primo carattere deve essere una lettera. Gli spazi non sono ammessi, quindi si consiglia di mantenere un nome con una sola parola, iniziando ogni parte con una lettera maiuscola (ad es. Il mio primo Macro ) o separare le parole con dei trattini bassi (ad esempio, il termine "parola"). Il mio_primo_Macro ).
- Nel Tasto di scelta rapida per assegnare una scorciatoia da tastiera alla macro (opzionale).
Sono ammesse sia lettere maiuscole che minuscole, ma è consigliabile utilizzare combinazioni di tasti maiuscoli (Ctrl + Maiusc + lettera) perché le scorciatoie delle macro sovrascrivono le scorciatoie predefinite di Excel quando la cartella di lavoro contenente la macro è aperta. Ad esempio, se si assegna Ctrl + S a una macro, si perderà la possibilità di salvare i file di Excel con una scorciatoia. Assegnando Ctrl + Maiusc + S si manterrà la possibilità di salvare i file di Excel.scorciatoia di salvataggio standard.
- Dal Memorizzare la macro in scegliere la posizione in cui si desidera memorizzare la macro:
- Libro di lavoro sulle macro personali - memorizza la macro in una cartella di lavoro speciale chiamata Personale.xlsb Tutte le macro memorizzate in questa cartella di lavoro sono disponibili ogni volta che si utilizza Excel.
- Questo libro di lavoro (impostazione predefinita) - la macro viene memorizzata nella cartella di lavoro corrente e sarà disponibile quando si riapre la cartella di lavoro o la si condivide con altri utenti.
- Nuovo libro di lavoro - crea una nuova cartella di lavoro e registra la macro in tale cartella.
- Nel Descrizione digitare una breve descrizione dell'attività della macro (facoltativa).
Anche se questo campo è facoltativo, vi consiglio di fornire sempre una breve descrizione. Quando create molte macro diverse, vi aiuterà a capire rapidamente cosa fa ogni macro.
- Cliccare OK per avviare la registrazione della macro.
- Nel Macro nome Cercate di dare un nome significativo e descrittivo alla vostra macro, in modo da poterla ritrovare rapidamente nell'elenco.
- Eseguire le azioni che si desidera automatizzare (vedere l'esempio di macro di registrazione).
- Al termine, fare clic sul pulsante Interrompere la registrazione sul pulsante Sviluppatore scheda:
O l'analogo pulsante del programma Stato bar:
Esempio di registrazione di una macro in Excel
Per vedere come funziona in pratica, registriamo una macro che applichi alcune formattazioni alle celle selezionate. A tale scopo, procedete come segue:
- Selezionare una o più celle da formattare.
- Sul Sviluppatore scheda o Stato barra, fare clic su Macro di registrazione .
- Nel Macro di registrazione configurare le seguenti impostazioni:
- Nome della macro Formattazione_intestazione (perché si intende formattare le intestazioni delle colonne).
- Posizionare il cursore nel campo Tasto di scelta rapida e premere contemporaneamente i tasti Maiusc + F. In questo modo si assegnerà la scorciatoia Ctrl + Maiusc + F alla macro.
- Scegliere di memorizzare la macro in questa cartella di lavoro.
- Per Descrizione utilizzare il seguente testo che spiega le funzioni della macro: Rende il testo in grassetto, aggiunge un colore di riempimento e lo centra. .
- Cliccare OK per avviare la registrazione.
- Formattare le celle preselezionate nel modo desiderato. Per questo esempio, utilizziamo la formattazione del testo in grassetto, il colore di riempimento azzurro e l'allineamento al centro.
Suggerimento: non selezionare alcuna cella dopo aver avviato la registrazione della macro, in modo da garantire che tutta la formattazione venga applicata alla macro. selezione , non un intervallo specifico.
- Cliccare Interrompere la registrazione su uno dei due lati del Sviluppatore o la scheda Stato bar.
Ora è possibile selezionare qualsiasi intervallo di celle in qualsiasi foglio, premere la scorciatoia assegnata (Ctrl+Maiusc + F) e la formattazione personalizzata verrà immediatamente applicata alle celle selezionate.
Come lavorare con le macro registrate in Excel
Tutte le opzioni principali che Excel mette a disposizione per le macro sono accessibili tramite il pulsante Macro Per aprirla, fare clic sul pulsante Macro sul pulsante Sviluppatore o premere la scorciatoia Alt+ F8.
Nella finestra di dialogo che si apre, è possibile visualizzare un elenco di macro disponibili in tutte le cartelle di lavoro aperte o associate a una particolare cartella di lavoro e utilizzare le seguenti opzioni:
- Correre - esegue la macro selezionata.
- Entrare in - consente di eseguire il debug e il test della macro nell'editor di Visual Basic.
- Modifica - apre la macro selezionata nell'Editor VBA, dove è possibile visualizzare e modificare il codice.
- Cancellare - elimina definitivamente la macro selezionata.
- Opzioni - consente di modificare le proprietà della macro, come ad esempio l'opzione associata Scorciatoia chiave e Descrizione .
Come visualizzare le macro in Excel
Il codice di una macro di Excel può essere visualizzato e modificato nell'Editor di Visual Basic. Per aprire l'Editor, premere Alt + F11 o fare clic sul pulsante Visual Basic sul pulsante Sviluppatore scheda.
Se vedete l'editor VB per la prima volta, non sentitevi scoraggiati o intimiditi. Non parleremo della struttura o della sintassi del linguaggio VBA. Questa sezione vi darà solo alcune nozioni di base su come funzionano le macro di Excel e su cosa fa effettivamente la registrazione di una macro.
L'editor VBA ha diverse finestre, ma ci concentreremo sulle due principali:
Progetto Explorer - visualizza un elenco di tutte le cartelle di lavoro aperte e dei relativi fogli. Inoltre, mostra i moduli, i moduli utente e i moduli di classe.
Finestra del codice - è possibile visualizzare, modificare e scrivere il codice VBA per ogni oggetto visualizzato nell'Esploratore progetto.
Quando abbiamo registrato la macro di esempio, nel backend si sono verificate le seguenti cose:
- Un nuovo modulo ( Moduel1 ) è stato inserito.
- Il codice VBA della macro è stato scritto nella finestra Codice.
Per visualizzare il codice di un modulo specifico, fare doppio clic sul modulo ( Modulo1 nel nostro caso) nella finestra Esploratore progetto. Normalmente, un codice macro è composto da queste parti:
Nome della macro
In VBA, ogni macro inizia con Sub seguito dal nome della macro e termina con Fine Sub , dove "Sub" è l'abbreviazione di Subroutine (chiamato anche Procedura ). La nostra macro di esempio si chiama Intestazione_Formatta() , quindi il codice inizia con questa riga:
Sub Header_Formatting()Se si desidera rinominare la macro è sufficiente cancellare il nome corrente e digitarne uno nuovo direttamente nella finestra del Codice.
Commenti
Le righe precedute da un apostrofo (') e visualizzate in verde per impostazione predefinita non vengono eseguite. Si tratta di commenti aggiunti a scopo informativo. Le righe di commento possono essere tranquillamente rimosse senza influire sulla funzionalità del codice.
Di solito, una macro registrata ha da 1 a 3 righe di commento: nome della macro (obbligatorio); descrizione e scorciatoia (se specificata prima della registrazione).
Codice eseguibile
Dopo i commenti, viene il codice che esegue le azioni registrate. A volte, una macro registrata può contenere molto codice superfluo, che può comunque essere utile per capire come funzionano le cose con VBA :)
L'immagine seguente mostra le funzioni di ciascuna parte del codice della macro:
Come eseguire una macro registrata
Eseguendo una macro, si dice a Excel di tornare al codice VBA registrato e di eseguire esattamente gli stessi passaggi. Esistono diversi modi per eseguire una macro registrata in Excel: ecco i più veloci:
- Se è stato assegnato un scorciatoia da tastiera alla macro, premere la scorciatoia.
- Premere Alt + 8 o fare clic sul pulsante Macro sul pulsante Sviluppatore Nella scheda Macro selezionare la macro desiderata e fare clic su Correre .
È anche possibile eseguire una macro registrata facendo clic sul proprio pulsante. Ecco i passaggi per crearne una: Come creare un pulsante macro in Excel.
Come salvare le macro in Excel
Sia che abbiate registrato una macro sia che abbiate scritto manualmente il codice VBA, per salvare la macro è necessario salvare la cartella di lavoro come macro abilitata (estensione .xlms). Ecco come fare:
- Nella cartella di lavoro contenente la macro, fare clic sul pulsante Risparmiare o premere Ctrl + S .
- Nel Salva con nome scegliere la finestra di dialogo Cartella di lavoro Excel abilitata alle macro (*.xlsm) dal Salva come tipo e quindi fare clic su Risparmiare :
Macro di Excel: cosa è e cosa non è registrato
Come si è appena visto, è abbastanza facile registrare una macro in Excel, ma per creare macro efficaci è necessario capire cosa succede dietro le quinte.
Cosa viene registrato
Il registratore di macro di Excel cattura molte cose, quasi tutti i clic del mouse e le pressioni dei tasti. Pertanto, è necessario riflettere attentamente sui propri passi per evitare un eccesso di codice che potrebbe causare un comportamento inaspettato della macro. Di seguito sono riportati alcuni esempi di ciò che Excel registra:
- Selezione di celle con il mouse o la tastiera. Viene registrata solo l'ultima selezione prima di un'azione. Ad esempio, se si seleziona l'intervallo A1:A10 e poi si fa clic sulla cella A11, verrà registrata solo la selezione di A11.
- Formattazione delle celle, come il colore del riempimento e del carattere, l'allineamento, i bordi, ecc.
- Formattazione dei numeri come percentuale, valuta, ecc.
- Modifica di formule e valori. Le modifiche vengono registrate dopo aver premuto Invio .
- Scorrere, spostare le finestre di Excel, passare ad altri fogli di lavoro e cartelle di lavoro.
- Aggiunta, denominazione, spostamento ed eliminazione di fogli di lavoro.
- Creazione, apertura e salvataggio di cartelle di lavoro.
- Esecuzione di altre macro.
Cosa non si può registrare
Nonostante le molte cose che Excel può registrare, alcune funzioni vanno oltre le capacità del Registratore di macro:
- Personalizzazioni della barra multifunzione di Excel e della barra degli strumenti di accesso rapido.
- Azioni all'interno delle finestre di dialogo di Excel, come Formattazione condizionale o Trova e sostituisci (viene registrato solo il risultato).
- Interazioni con altri programmi. Ad esempio, non è possibile registrare il copia/incolla da una cartella di lavoro Excel in un documento Word.
- Tutto ciò che coinvolge l'editor VBA. Questo impone le limitazioni più significative: molte cose che possono essere fatte a livello di programmazione non possono essere registrate:
- Creazione di funzioni personalizzate
- Visualizzazione di finestre di dialogo personalizzate
- Realizzare cicli come Per il prossimo , Per ogni , Fare mentre , ecc.
- Valutazione delle condizioni. In VBA è possibile utilizzare l'opzione SE Allora Else per verificare una condizione ed eseguire del codice se la condizione è vera o un altro codice se la condizione è falsa.
- Esecuzione di codice basato su eventi. Con VBA, è possibile utilizzare molti eventi per eseguire un codice associato a quell'evento (come l'apertura di una cartella di lavoro, il ricalcolo di un foglio di lavoro, la modifica della selezione e così via).
- Quando si scrive una macro nell'Editor VBA, è possibile fornire argomenti di input affinché la macro esegua un determinato compito. Una macro registrata non può avere argomenti perché è indipendente e non è collegata ad altre macro.
- Per esempio, se si registra una macro che copia celle specifiche, per esempio nella cartella Totale Excel registrerà solo gli indirizzi delle celle copiate. Con VBA è possibile codificare la logica, cioè copiare i valori nella riga Totale fila.
Sebbene le limitazioni di cui sopra pongano molti limiti alle macro registrate, sono comunque un buon punto di partenza. Anche se non si ha alcuna idea del linguaggio VBA, è possibile registrare rapidamente una macro e poi analizzarne il codice.
Consigli utili per la registrazione di macro in Excel
Di seguito troverete alcuni suggerimenti e note che possono potenzialmente farvi risparmiare molto tempo e nervi, rendendo la curva di apprendimento più fluida e le macro più efficienti.
Utilizzare i riferimenti relativi per la registrazione delle macro
Per impostazione predefinita, Excel utilizza assoluto referenziazione Ciò significa che il codice VBA farà sempre riferimento esattamente alle stesse celle selezionate, indipendentemente dalla posizione nel foglio di lavoro in cui ci si trova quando si esegue la macro.
Tuttavia, è possibile modificare il comportamento predefinito di riferimento relativo In questo caso, VBA non codificherà gli indirizzi delle celle, ma lavorerà relativamente alla cella attiva (attualmente selezionata).
Per registrare una macro con riferimento relativo, fare clic sul pulsante Utilizzo Riferimenti relativi sul pulsante Sviluppatore Per tornare al riferimento assoluto, fare nuovamente clic sul pulsante per disattivarlo.
Ad esempio, se si registra l'impostazione di una tabella con il riferimento assoluto predefinito, la macro ricreerà sempre la tabella nello stesso punto (in questo caso, Intestazione in A1, Articolo1 in A2, Articolo2 in A3).
Sub Absolute_Referencing() Range( "A1" ). Select ActiveCell.FormulaR1C1 = "Header" Range( "A2" ). Select ActiveCell.FormulaR1C1 = "Item1" Range( "A3" ). Select ActiveCell.FormulaR1C1 = "Item2" End Sub
Se si registra la stessa macro con riferimento relativo, la tabella verrà creata nel punto in cui si è posizionato il cursore prima di eseguire la macro ( Intestazione nella cella attiva, Articolo1 nella cella sottostante, e così via).
Sub Relative_Referencing() ActiveCell.FormulaR1C1 = "Header" ActiveCell.Offset(1, 0).Range( "A1" ). Select ActiveCell.FormulaR1C1 = "Item1" ActiveCell.Offset(1, 0).Range( "A1" ). Select ActiveCell.FormulaR1C1 = "Item2" ActiveCell.Offset(1, 0).Range( "A1" ). Select End SubNote:
- Quando si utilizzano i riferimenti relativi, assicurarsi di selezionare la cella iniziale prima di iniziare la registrazione della macro.
- I riferimenti relativi non funzionano per tutto: alcune funzioni di Excel, ad esempio la conversione di un intervallo in una tabella, richiedono riferimenti assoluti.
Selezionare gli intervalli utilizzando le scorciatoie da tastiera
Quando si seleziona una cella o un intervallo di celle con il mouse o con i tasti freccia, Excel scrive gli indirizzi delle celle. Di conseguenza, ogni volta che si esegue una macro, le operazioni registrate verranno eseguite esattamente sulle stesse celle. Se non si desidera questo, utilizzare le scorciatoie per la selezione di celle e intervalli.
A titolo di esempio, registriamo una macro che imposta un formato specifico (d-mmm-yy) per le date della tabella seguente:
A tal fine, si registrano le seguenti operazioni: premere Ctrl + 1 per aprire la finestra di dialogo Formattare le celle Se la registrazione prevede la selezione dell'intervallo con il mouse o con i tasti freccia, Excel produrrà il seguente codice VBA:
Sub Date_Format() Range( "A2:B4" ). Select Selection.NumberFormat = "d-mmm-yy" End SubL'esecuzione della macro di cui sopra selezionerà ogni volta l'intervallo A2:B4. Se si aggiungono altre righe alla tabella, queste non verranno elaborate dalla macro.
Vediamo ora cosa succede quando si seleziona la tabella con una scorciatoia.
Posizionate il cursore nella cella in alto a sinistra dell'intervallo di destinazione (A2 in questo esempio), avviate la registrazione e premete Ctrl + Shift + Fine. Come risultato, la prima riga del codice avrà questo aspetto:
Range(Selection, ActiveCell.SpecialCells(xlLastCell)). SelezionareQuesto codice seleziona tutte le celle dalla cella attiva all'ultima cella utilizzata, il che significa che tutti i nuovi dati saranno inclusi automaticamente nella selezione.
In alternativa, è possibile utilizzare le combinazioni Ctrl + Maiusc + Frecce:
- Ctrl + Shift + Freccia destra per selezionare tutte le celle usate a destra, seguite da
- Ctrl + Maiusc + Freccia giù per selezionare tutte le celle utilizzate in basso.
In questo modo si genereranno due righe di codice invece di una, ma il risultato sarà lo stesso: tutte le celle con dati in basso e a destra della cella attiva verranno selezionate:
Range(Selection, Selection. End (xlToRight)). Select Range(Selection, Selection. End (xlDown)). SelectRegistrare una macro per la selezione piuttosto che per celle specifiche
Il metodo precedente (cioè la selezione di tutte le celle utilizzate a partire dalla cella attiva) è ottimo per eseguire le stesse operazioni sull'intera tabella. In alcune situazioni, tuttavia, si può desiderare che la macro elabori un determinato intervallo anziché l'intera tabella.
A questo scopo, VBA mette a disposizione la funzione Selezione che si riferisce alla cella o alle celle attualmente selezionate. La maggior parte delle cose che si possono fare con un intervallo, si possono fare anche con la selezione. Quale vantaggio offre? In molti casi, non è necessario selezionare nulla durante la registrazione: è sufficiente scrivere una macro per la cella attiva. Quindi, selezionare l'intervallo desiderato, eseguire la macro e questa manipolerà l'intera selezione.
Ad esempio, questa macro di una riga può formattare in percentuale un numero qualsiasi di celle selezionate:
Sub Percent_Format() Selection.NumberFormat = "0,00%" End SubPianificate con attenzione ciò che registrate
Il registratore di macro di Microsoft Excel cattura quasi tutte le attività, compresi gli errori che si commettono e si correggono. Ad esempio, se si preme Ctrl + Z per annullare qualcosa, anche questo verrà registrato. Alla fine si potrebbe ritrovarsi con un sacco di codice inutile. Per evitarlo, si può modificare il codice nell'editor VB oppure interrompere la registrazione, eliminare la macro difettosa e ricominciare la registrazione.
Eseguire il backup o salvare la cartella di lavoro prima di eseguire una macro
Il risultato delle macro di Excel non può essere annullato. Pertanto, prima della prima esecuzione di una macro, è opportuno creare una copia della cartella di lavoro o almeno salvare il lavoro corrente per evitare modifiche impreviste. Se la macro fa qualcosa di sbagliato, è sufficiente chiudere la cartella di lavoro senza salvare.
Mantenere brevi le macro registrate
Quando si automatizza una sequenza di attività diverse, si può essere tentati di registrarle tutte in un'unica macro. Ci sono due ragioni principali per non farlo. In primo luogo, è difficile registrare una macro lunga senza errori. In secondo luogo, le macro di grandi dimensioni sono difficili da comprendere, testare ed eseguire il debug. Pertanto, è una buona idea suddividere una macro di grandi dimensioni in più parti. Ad esempio, quando si crea una tabella di riepilogoda più fonti, è possibile utilizzare una macro per importare le informazioni, un'altra per consolidare i dati e una terza per formattare la tabella.
Spero che questo tutorial vi abbia dato qualche indicazione su come registrare una macro in Excel. Comunque, vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!