Macro Excel più veloci? In questo articolo voglio mostrarti nove semplici trucchi per velocizzare l’esecuzione delle macro Excel.
Attraverso questi suggerimenti voglio mostrarti come rendere il tuo codice VBA più efficiente.
Perché è necessario ottimizzare il codice delle macro?
I motivi sono differenti! Abbiamo bisogno di ottimizzare il codice VBA per:
- eseguire più velocemente le nostre macro,
- risparmiare tempo,
- avere delle istruzioni facili da capire,
- rendere la programmazione più efficiente,
- ottenere risultati di buona qualità, ecc.
Per ottenere tutto ciò, ecco nove semplici trucchi che miglioreranno le prestazioni delle tue macro.
1 | Macro Excel più veloci senza lo sfarfallio dello schermo
Durante l’esecuzione delle tue macro ti sarà capitato di notare un certo sfarfallio dello schermo. Fermare questo sfarfallio ti permetterà di accelerare notevolmente l’esecuzione del tuo codice e risparmiare molto tempo.
In realtà si tratta dell’aggiornamento dello schermo.
Pertanto per ridurre questo effetto sarà sufficiente inserire Application.ScreenUpdating = False all'inizio del codice e Application.ScreenUpdating = True prima della fine del codice come mostrato nell'esempio seguente.

2 | Usa VbNullString invece di = ""
Il vbNullString è una costante e rappresenta una stringa nulla.
Anche le doppie virgolette ("") rappresentano una stringa vuota. Tuttavia esse occupano più memoria rispetto a vbNullString.
La costante vbNullString oltre ad occupare meno memoria è più veloce nel processo di assegnazione.
Pertanto è preferibile usare vbNullString invece delle doppie virgolette ("").
Vediamo un esempio.

Sebbene non noterai alcuna differenza, quando il codice diventa consistente le prestazioni saranno decisamente migliori.
3 | Evita l'uso di Copy e Paste quando possibile
Quando vuoi copiare dei dati da un foglio all'altro, il Copia e Incolla potrebbe rallentare il trasferimento dei dati.
Voglio suggerirti delle interessanti soluzioni.

4 | Utilizza l'istruzione With nelle macro Excel quando lavori con gli oggetti
Nelle tue macro Excel spesso avrai utilizzato più istruzioni riferite allo stesso oggetto; in questi casi è opportuno utilizzare l'istruzione With ... End With anziché ripetere il riferimento all'oggetto. Vediamo un esempio per capire meglio.

L’istruzione With permette di ottimizzare la macro.
Come vedi, nell'esempio, non sarà necessario ogni volta far riferimento all'oggetto Range("A1"). Di conseguenza la lettura e l’esecuzione saranno più rapide.
5 | Libera memoria dalle variabili Object
La dichiarazione delle variabili richiede a Excel di dedicare degli spazi in memoria, ovvero dei "contenitori", per posizionare certi oggetti.
Una buona pratica di programmazione è "svuotare" le variabili oggetto quando non sono più necessarie. Ciò si traduce in un risparmio di risorse.
La regola generale è che qualsiasi variabile oggetto (inizializzata con la parola chiave Set) deve essere distrutta. L'utilità è liberare risorse al computer che rimarrebbero occupate.
Le variabili oggetto (quelle che si assegnano usando Set) sono memorizzate in modo differente dalle variabili "semplici" come Integer o Boolean.
VBA, al termine di una procedura (Sub) o di una funzione (Function), esegue la "raccolta della spazzatura" (la cosiddetta garbage collection). Tuttavia, se si verifica un errore non gestito, ciò potrebbe non riuscire e gli oggetti rimarranno in memoria.
La garbage collection è un meccanismo di Excel che tiene traccia delle variabili create; quando una variabile non è più utilizzata, rilascia la memoria. Tipicamente accade quando la variabile perde la visibilità, cioè quando termina la routine in cui è dichiarata.
Quindi, ti suggerisco di aggiungere la gestione degli errori a tutte le procedure o alle funzioni che usano le variabili oggetto. Inoltre, assicurati che tutte le variabili oggetto siano impostate su Nothing. Utilizza l'istruzione Set per assegnare il valore Nothing a una variabile oggetto. In questo modo distruggerai il riferimento a un oggetto anche se si verifica un errore.

6 | Macro Excel: evita If ... Then … Else quando possibile
Un altro interessante accorgimento che puoi utilizzare è di evitare, quando possibile l’istruzione If … Then … Else.
Questo perché, in genere, le istruzioni condizionali rallentano l’esecuzione del codice delle macro. Sarebbe opportuno gestirle con parsimonia.
Di seguito ti propongo un esempio.

7 | Dichiara sempre le variabili VBA correttamente!
È sempre meglio, seppur non necessario, dichiarare le variabili all'interno delle macro e farlo in modo corretto.
Ciò consente di evitare risultati imprevisti durante la fase di esecuzione.
Utilizza l’opzione Option Explicit nelle macro Excel
Per impostazione predefinita, Excel non ci obbliga a dichiarare le variabili. Tuttavia, è necessario modificare immediatamente questa impostazione.
Avvia l’Editor Visual Basic (VBE) attraverso la combinazione di tasti Alt + F11. Dal menu Strumenti, sceglie Opzioni.
Nella scheda Editor della finestra di dialogo Opzioni, assicurati che ci sia un segno di spunta davanti a "Dichiarazione di variabili obbligatoria". Successivamente premi OK per confermare.

Ora inserisci un nuovo modulo. Come prima riga del modulo sarà presente la scritta Option Explicit. Questa riga indica a Excel che tutte le variabili devono essere dichiarate.

Specifica il tipo di variabile VBA Excel
Per dichiarare una variabile, digita Dim, il nome della variabile e il tipo di variabile così come mostrato nel seguente esempio.

Se non si specifichi il tipo di variabile, VBA dichiara la variabile come di tipo Variant. Il tipo Variant può accettare qualsiasi tipo di variabile.
Sono rari i casi in cui si ha un buon motivo per usare il tipo Variant.
Al contrario, circa il 95% delle volte, è opportuno usare tipi di variabile in modo esplicito.
Una buona ragione per farlo è che il codice verrà eseguito più velocemente. Ma principalmente perché saranno ridotti gli errori di codifica, in quanto Excel impone che venga specificato il tipo di variabile.

Verifichiamo quanto appenda detto con un esempio. Proviamo ad eseguire il seguente codice:

Excel ci mostrerà una finestra di errore, in quanto il tipo di dati Integer non può contenere testo.

Un'altra buona ragione per dichiarare esplicitamente il tipo di variabile è che aiuta a esprimere le proprie intenzioni quando si scrive il codice. Questo risulta fondamentale quando si riprende in mano il codice dopo diverso tempo.
Sapere se una variabile era destinata a contenere un numero o un testo può rendere molto più facile leggere il vecchio codice, trovare errori e proseguire con la codifica.
Per questo motivo, quando si ha bisogno di dichiarare una variabile come Variant, è importante farlo in modo esplicito.

Dichiarare una variabile come Variant in modo esplicito, ti permetterà sempre di capire che intendi utilizzare quel tipo di variabile, piuttosto che farlo come disattenzione.
Prendi la scorciatoia e risparmia qualche battitura!
Dichiarare le variabili ti consente, inoltre, di sfruttare una scorciatoia che può farti risparmiare qualche battitura.
È sufficiente digitare i primi due o tre caratteri del nome della variabile e quindi premere Ctrl + Spazio. All'interno dell’Editor VB verrà completata la voce per te o, nel caso la scelta fosse ambigua, mostrerà un elenco di parole corrispondenti alla tua scelta.
In realtà, questa scorciatoia funziona anche con parole e funzioni riservate.

8 | Riduci il numero di righe usando due punti (:)
È possibile scrivere le nostre dichiarazioni delle variabili in una singola riga anziché in più righe.
Osserviamo gli esempi riportati di seguito per capire meglio.
Esempio 1: scrivere più istruzioni in una singola riga

La prima macro eseguirà il processo più velocemente rispetto alla seconda procedura.
Esempio 2: utilizzare i due punti (:) per scrivere più istruzioni in una singola riga

La prima macro eseguirà il processo più velocemente rispetto alla seconda procedura.
9 | Evita di registrare le macro Excel quando possibile
È sempre meglio, ove possibile, evitare l’utilizzo del registratore di macro in quanto il codice generato avrà effetti sulle prestazioni delle nostre macro.
Attraverso il seguente esempio osserviamo la differenza tra una macro registrata ed una macro scritta.
Nel primo esempio è stata avviata la registrazione per applicare il grassetto ed un colore di riempimento alla cella A1.
Se utilizzi il registratore di macro, il codice avrà un aspetto simile a quello riportato di seguito.
Ti consiglio l’utilizzo del registratore di macro quando sei alle prime armi o desideri ottenere il codice. È sicuramente un utile strumento per capire il linguaggio VBA. Tuttavia, è necessario sfoltirlo.

Spero che quest’articolo ti sia utile.
Buon lavoro!
Vuoi saperne di più sulle macro Excel?
Allora potrebbero interessarti i seguenti articoli:
Vuoi imparare a utilizzare il linguaggio Excel VBA?
Basta con i lavori noiosi e ripetitivi! Grazie al VBA puoi far lavorare Excel al tuo posto!
Ho registrato per te un corso interamente dedicato alle Macro e al VBA.
Attraverso degli esempi pratici, ti introdurrò, al mondo delle Macro di Excel illustrandoti tutto il potenziale per automatizzare le tue attività di lavoro quotidiane.
Cosa aspetti?
Sfrutta tutto il potenziale di Excel con il corso Macro e VBA!