Programma
Visual Basic for Applications (VBA) in Excel è un linguaggio che ti permette di automatizzare attività ripetitive e ampliare le funzionalità di Excel ben oltre le sue caratteristiche standard. Che tu sia un principiante in cerca di produttività o un utente esperto che vuole snellire flussi di lavoro complessi, VBA è qui per rendere le cose più semplici.
In questa guida, spiegherò concetti VBA di base e avanzati. Tuttavia, se sei alle prime armi con Excel, inizia da Excel Fundamentals per costruire basi solide prima di passare a VBA.
Cos'è VBA in Excel?
Visual Basic for Applications (VBA) è un linguaggio di programmazione usato per automatizzare attività e ampliare le funzionalità delle applicazioni Microsoft Office. Puoi usarlo con Excel, Word, Access e altri programmi Office, anche se probabilmente viene usato soprattutto per creare macro personalizzate in Excel, che vedremo a breve.
Personalmente, la prima volta che ho usato VBA è stato per automatizzare un report settimanale che richiedeva ore per essere compilato manualmente. Con poche righe di codice ho ridotto il processo a un solo clic e ho risparmiato un sacco di tempo. Da allora ho capito che investire un po' di tempo per padroneggiarlo ripaga enormemente in termini di produttività.
Termini importanti di VBA in Excel
Prima di lavorare con VBA, è essenziale capire i suoi termini e concetti chiave. Ecco quindi un elenco di alcuni dei termini più usati che incontrerai quando inizierai ad automatizzare attività e a creare soluzioni personalizzate in Excel.
-
Moduli sono i contenitori del codice VBA, dove sono archiviati procedure e funzioni.
-
Oggetti sono i mattoni di VBA. Rappresentano elementi come cartelle di lavoro, fogli di lavoro e celle.
-
Procedure sono blocchi di codice che svolgono compiti specifici, spesso classificati in subprocedure o funzioni.
-
Istruzioni sono i comandi all'interno di una procedura che dicono a Excel (o Word o Access) quali azioni eseguire.
-
Variabili memorizzano dati che possono essere usati e manipolati nel codice.
-
Operatori logici confrontano valori e prendono decisioni in base ai risultati. Includono operatori come
And,OreNot.
Iniziare con VBA in Excel
Per iniziare a usare VBA, devi accedere all'editor VBA. È qui che scriverai e modificherai il tuo codice. Vediamo come arrivarci:
Abilitare la scheda Sviluppo
Il primo passaggio è abilitare la scheda Sviluppo, spesso nascosta nella Barra multifunzione. Per farlo:
- Fai clic con il tasto destro in un punto qualsiasi della Barra multifunzione.

Barra multifunzione in Excel. Immagine dell'autore.
- Seleziona l'opzione Personalizza barra multifunzione....

Personalizza la barra multifunzione per abilitare la scheda Sviluppo. Immagine dell'autore.
- Si aprirà una finestra di dialogo. Seleziona la casella Sviluppo e fai clic su OK.

Selezione dell'opzione Sviluppo. Immagine dell'autore.
Ora vedrai la scheda Sviluppo in alto nella Barra multifunzione.

La scheda Sviluppo è abilitata nella barra multifunzione. Immagine dell'autore.
Aprire l'editor VBA
Una volta abilitata la scheda Sviluppo, puoi accedere all'editor VBA. Per farlo, fai clic sulla scheda Sviluppo e seleziona Visual Basic tra le opzioni. Puoi anche usare la scorciatoia da tastiera ALT + F11 per aprire direttamente l'editor.

Editor VBA. Immagine dell'autore.
Orientarsi nell'interfaccia di VBA
L'editor VBA può sembrare inizialmente intimidatorio, ma è semplice da usare. Vediamo alcune aree chiave:
- Finestra del codice: qui scrivi e modifichi il tuo codice VBA.
- Esplora progetti: mostra una visuale gerarchica dei progetti e dei moduli nella tua cartella di lavoro.
- Finestra Proprietà: visualizza le proprietà degli oggetti selezionati per personalizzarne le impostazioni.

Interfaccia VBA in Excel. Immagine dell'autore.
Scrivere codice VBA in Excel
Ora che conosci l'editor VBA, è il momento di scrivere un po' di codice. Il codice VBA è composto da parti diverse, come subprocedure e funzioni. Sono insiemi di istruzioni che dicono a Excel cosa fare. Non preoccuparti se non hai mai programmato: andremo per gradi.
Scrivere una subroutine VBA
Prima di scrivere una macro, devi creare l'ambiente per la macro. Per farlo, segui questi passaggi:
- Nell'editor VBA, seleziona Inserisci > Modulo. Verrà creato un nuovo modulo con il nome predefinito Modulo1.

Seleziona Modulo nella scheda Inserisci. Immagine dell'autore.
- Puoi cambiare il nome del modulo nel riquadro Proprietà.

Rinomina il modulo VBA. Immagine dell'autore.
Ora che sai come impostare l'ambiente per creare una macro, creiamo insieme la prima macro per visualizzare un messaggio. Per impostazione predefinita, la finestra del codice si apre quando viene creato il modulo. Se nel tuo caso non succede, fai clic con il tasto destro sul modulo che hai creato e poi su Visualizza codice. Apparirà la finestra del codice, dove potrai scrivere le tue macro.
Qui creo una macro per visualizzare il messaggio Hello, World!. Per farlo, scrivo il seguente codice nel riquadro del codice:
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
Ecco cosa succede:
-
Sub è la parola chiave per una subroutine, un blocco di codice che esegue un compito specifico. In VBA, una subroutine non restituisce un valore.
-
ShowMessage è il nome della subroutine. Puoi chiamarla come preferisci, purché rispetti le convenzioni di denominazione VBA (ad es. niente spazi, non può iniziare con un numero).
-
() qui servono a definire i parametri della subroutine. Poiché per questo compito non servono parametri, le parentesi sono vuote.
-
MsgBox è una funzione incorporata in VBA che visualizza una finestra di messaggio sullo schermo.
-
End Sub indica la fine della subroutine. Tutto ciò che sta tra
SubedEnd Subè il codice che verrà eseguito quando la subroutine viene richiamata. -
Le stringhe di testo in VBA sono racchiuse tra virgolette. Qui vogliamo che la stringa
Hello, World!appaia nella finestra di messaggio.

Scrivere una macro. Immagine dell'autore.
- Ora è il momento di eseguire il codice. Usa il tasto di scelta rapida F5. Se vuoi farlo manualmente, vai alla scheda Sviluppo e seleziona Macro. Fai clic su Esegui.

Seleziona l'opzione Macro nella scheda Sviluppo. Immagine dell'autore.
Ora vedrai apparire la finestra di messaggio nel tuo foglio Excel.

Finestra di messaggio. Immagine dell'autore.
Capire gli oggetti in VBA
In VBA, gli oggetti ti consentono di controllare diversi elementi di Excel e automatizzare attività per flussi di lavoro più efficienti. Ci sono tre oggetti chiave: Workbook, Worksheet e Range. Vediamoli con esempi pratici.
L'oggetto Workbook (cartella di lavoro) è qualsiasi file Excel attualmente aperto. Consente di eseguire azioni come aggiungere nuovi fogli o salvare i fogli esistenti nella cartella di lavoro. In questo esempio voglio aggiungere un foglio alla cartella aperta e poi salvarla. All'inizio avevo Sheet1. Per aggiungere un altro foglio, scrivo il seguente codice:
Sub AddSheetAndSaveWorkbook()
' Adds a new worksheet to the active workbook
ActiveWorkbook.Sheets.Add
' Saves the workbook
ActiveWorkbook.Save
End Sub
Questo codice funziona esattamente come il precedente, ma qui ho aggiunto dei commenti. I commenti iniziano con ' e non influiscono sul codice. Li aggiungiamo solo per comodità, per rendere il codice più chiaro.
Ora vedi che è stato creato un altro foglio, Sheet2.

Aggiungere e salvare un nuovo foglio nella cartella esistente con VBA. Immagine dell'autore.
L'oggetto Worksheet rappresenta il foglio attivo in Excel. Con questo puoi modificare o manipolare il foglio attivo. Per esempio, voglio cambiare il nome del foglio attivo. Per farlo, inserisco il seguente codice:
Sub RenameActiveSheet()
' Renames the active sheet to "Sales Report".
ActiveSheet.Name = "Sales Report"
End Sub

Cambiare il nome del foglio di lavoro con VBA. Immagine dell'autore.
Ora, Sheet1 è stato rinominato in Sales Report.

Rinominare il foglio di lavoro di Excel con VBA. Immagine dell'autore.
L'oggetto Range si riferisce a un gruppo specifico di celle o a una singola cella che possiamo gestire secondo necessità. Nel seguente esempio, seleziono un intervallo di celle da F3 a I3 e ne cambio il colore di sfondo. Per farlo, scrivo il seguente codice:
Sub FormatRange()
' Selects the range from A1 to C6
Range("F3:I3"). Select
' Changes the background color of the selected range to Green
Selection.Interior.Color = RGB(101, 255, 143)
End Sub

Selezionare un intervallo e cambiarne il colore con VBA. Immagine dell'autore.
Puoi vedere la differenza nei risultati.

Cambiare il colore con VBA in Excel. Immagine dell'autore.
Creare variabili in VBA
Come altri linguaggi di programmazione, le variabili in VBA memorizzano due tipi principali di dati, numeri e testo. Per usarle in VBA, devi prima dichiarare la variabile usando la parola chiave in base alle tue preferenze, seguita dal nome della variabile e dal tipo di dato.
Keyword variableName As DataType
Qui:
-
Keywordpuò essereDim,Static,PublicePrivate. -
variableNamesi riferisce al nome scelto per questa variabile (senza spazi). -
Asè usato per dichiarare il tipo della variabile. -
DataTypesi riferisce al tipo della variabile, comeInteger.
Quando lavori con le variabili, devi anche rispettare alcune regole:
- La lunghezza deve essere inferiore a 255 caratteri.
- Non sono consentiti spazi tra i caratteri.
- Il nome non può iniziare con un numero.
- Non usare punti nel nome.
Tipo di dato numerico
I tipi di dato numerici in VBA vengono usati per memorizzare valori numerici.
| Tipo di dato | Memoria | Intervallo di valori |
|---|---|---|
| Byte | 1 Byte | Memorizza interi da 0 a 255 |
| Integer | 2 Byte | Memorizza numeri interi nell'intervallo da -32.768 a 32.767 |
| Long | 4 Byte | Memorizza interi più grandi, da -2.147.483.648 a 2.147.483.647 |
| Single | 4 Byte | Memorizza numeri decimali a singola precisione |
| Double | 8 Byte | Memorizza numeri decimali a doppia precisione |
| Currency | 8 Byte | Memorizza numeri con decimali fissi |
| Variant (testo) | Lunghezza del testo + 22 byte | Da 0 a 2 miliardi di caratteri |
Tipo di dato non numerico
I tipi di dato non numerici in VBA memorizzano valori che non sono numeri.
| Tipo di dato | Memoria | Intervallo di valori |
|---|---|---|
| String | Lunghezza stringa | Memorizza testo |
| Date | 8 Byte | Memorizza data e ora |
| Boolean | 2 Byte | Memorizza True o False |
| Variant | 16 Byte | Memorizza qualsiasi tipo di dato ed è usato quando il tipo non è noto in anticipo |
Automatizzare attività con le macro VBA di Excel
Le macro sono essenzialmente una serie di istruzioni create in VBA per svolgere attività ripetitive. Con una macro puoi registrare una serie di azioni, come formattare celle, copiare dati o eseguire calcoli. Dopo aver salvato la macro, puoi riapplicare queste azioni con un solo clic. Questo fa risparmiare tempo, soprattutto quando lavori con dataset grandi o compiti ripetitivi.
Per esempio, se formatti spesso i tuoi report sempre allo stesso modo, puoi registrare una macro che applica tutti i passaggi di formattazione necessari invece di farlo manualmente ogni volta. In seguito potrai eseguire questa macro per formattare nuovi dati. Abbiamo mostrato un paio di esempi di base, ma immagina di fare molte più piccole azioni con un solo clic. Anche se non hai esperienza di coding, puoi comunque automatizzare le attività di routine per semplificare il flusso di lavoro e ridurre le possibilità di errore che possono verificarsi quando si ripetono azioni manualmente.
Registrare una macro di Excel
Vediamo come puoi registrare una macro per applicare alcune modifiche di formattazione:
- Vai alla scheda Sviluppo > pulsante Registra macro.
- Si aprirà una finestra di dialogo. Dai un nome alla macro come ho fatto io, FormatCells.
- Assegna una scorciatoia da tastiera se vuoi. Io le ho assegnato Ctrl+S.
- Fai clic su OK per iniziare la registrazione.
Ora che la macro sta registrando, esegui le azioni che vuoi automatizzare. In questo esempio, sto registrando alcune modifiche di formattazione su una tabella semplice. Una volta completato, torna alla scheda Sviluppo e fai clic sul pulsante Interrompi registrazione. Qui sotto puoi vedere la macro in azione.
Registrare una macro con VBA in Excel. Gif dell'autore.
Ora, se hai un altro dataset in un altro foglio e vuoi applicare la stessa formattazione anche lì, invece di riformattare tutto da capo, premi la scorciatoia che hai creato (nel mio caso Ctrl+S). Altrimenti vai su foglio2 > scheda Sviluppo > Macro > Esegui per farlo manualmente.

Usare la macro di Excel. Gif dell'autore.
Modificare le macro di Excel
Dopo aver registrato una macro, puoi anche ritoccarne o personalizzarne le azioni. Ecco come:
- Vai alla scheda Sviluppo e fai clic su Visual Basic.
- Si aprirà l'editor VBA. Ora, in Esplora progetti, cerca la cartella di lavoro in cui è archiviata la macro.
- Espandi la cartella Moduli, quindi fai doppio clic sul modulo che contiene la tua macro. La finestra del codice mostrerà il codice VBA della macro registrata.

Codice della macro registrata in Excel. Immagine dell'autore.
Ogni riga di codice mostra l'azione eseguita durante la registrazione. Da qui, puoi modificare il codice registrato per personalizzare la macro come preferisci. Nel mio caso, ho impostato Selection.Font.Bold su False per rimuovere il grassetto. Una volta effettuate le modifiche, salva cliccando sul pulsante Salva o premi Ctrl+S ed Esegui il codice per applicare i cambiamenti. 
Personalizzare la macro VBA di Excel. Immagine dell'autore.
Dopo aver eseguito la macro, puoi vedere i risultati: le colonne che prima erano in grassetto ora non lo sono più.

Usare una macro in Excel. Immagine dell'autore
Scrivere macro personalizzate in Excel
Potrebbero esserci compiti avanzati per cui non puoi registrare una macro. In questi casi, devi scrivere una macro da zero. Per esempio, voglio copiare i dati da un foglio di lavoro a un altro. Ecco come scrivo una macro personalizzata:
- Apri manualmente l'editor VBA nel primo foglio o premi Alt+F11.
- Inserisci un nuovo modulo.
- Scrivi il seguente codice nel riquadro del codice.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
- Salva la macro e fai clic su Esegui.
Ora puoi vedere che i dati da Sheet1 sono stati copiati su Sheet2.

Scrivere una macro personalizzata con VBA. Gif dell'autore.
Considerazioni finali
Dall'automazione di attività ripetitive alla creazione di macro complesse, VBA apre un mondo di possibilità all'interno di Excel. Man mano che prendi confidenza con le basi, esercitati a scrivere codice ed esplora gradualmente le funzionalità più avanzate di VBA. Ricorda: la chiave per padroneggiare VBA — o qualsiasi linguaggio di programmazione — è la pratica costante e la voglia di sperimentare. Per migliorare ulteriormente le tue competenze, valuta queste risorse aggiuntive. I corsi Data Analysis in Excel e Learn Excel sono ottimi per approfondire le funzionalità di Excel.
Se vuoi ampliare le tue conoscenze di programmazione oltre VBA, la guida How to Become a Programmer in 2024 offre una roadmap. Dagli un'occhiata se l'argomento ti interessa. Inoltre, il corso Financial Modeling in Excel è perfetto per chi vuole creare modelli finanziari dettagliati.
Sono una content strategist: mi piace semplificare argomenti complessi. Ho aiutato aziende come Splunk, Hackernoon e Tiiny Host a creare contenuti coinvolgenti e informativi per il loro pubblico.
Domande frequenti su VBA in Excel
Qual è lo scopo dell'istruzione Explicit in VBA?
Option Explicit aiuta a garantire che tutte le variabili siano dichiarate esplicitamente prima dell'uso, riducendo i bug e rendendo il codice più manutenibile.
Come posso proteggere con password il mio codice VBA?
Puoi proteggere il tuo codice VBA andando su Editor VBA > Strumenti > Proprietà VBAProject > scheda Protezione. Seleziona Blocca progetto per la visualizzazione e imposta una password.
Qual è la differenza tra ActiveWorkbook e ThisWorkbook in VBA?
ActiveWorkbook si riferisce alla cartella di lavoro attualmente in primo piano, che potrebbe non contenere il codice VBA. Thisworkbook si riferisce alla cartella di lavoro in cui risiede il codice VBA, indipendentemente da quale cartella sia attiva.
Cosa sono gli UserForm in VBA e come possono essere utilizzati?
UserForms sono finestre di dialogo personalizzate in VBA che consentono agli utenti di inserire dati. Possono essere usate per creare moduli interattivi per l'inserimento dati, la selezione o qualsiasi interazione che richieda un'interfaccia personalizzata.


