
Se usi Excel regolarmente, probabilmente hai già familiarità con la scrittura di formule utilizzando funzioni come SUM, VLOOKUP o IF. Forse ti sei persino avventurato nella registrazione di macro per velocizzare formattazioni ripetitive. Ma a un certo punto, le formule di base e il registratore di macro non sono più sufficienti. Per sbloccare davvero la potenza di Excel e automatizzare flussi di lavoro complessi, devi spingerti dietro le quinte e scrivere il tuo codice.
Benvenuto in Visual Basic for Applications (VBA), il linguaggio di programmazione integrato di Excel. Imparare il VBA ti permette di interagire con Excel a un livello fondamentale, trasformando un foglio di calcolo statico in un'applicazione software dinamica. In questo tutorial, tratteremo i concetti fondamentali del VBA (variabili, cicli e condizioni) e ti guideremo passo dopo passo nella scrittura del tuo primo programma funzionante.
Prima di immergerti nel codice, potresti chiederti perché dovresti preoccuparti di imparare un linguaggio di programmazione quando Excel è già ricco di potenti funzionalità . Se sei agli inizi, ti consigliamo vivamente di padroneggiare prima le basi. Puoi consultare la nostra guida completa per principianti di Excel 2025 per assicurarti di avere solide fondamenta.
Tuttavia, una volta presa confidenza con gli strumenti nativi di Excel, il VBA offre vantaggi incredibili:
Per scrivere il tuo primo programma Excel, devi avere accesso alla scheda Sviluppo, che è nascosta per impostazione predefinita.
Ora vedrai la scheda Sviluppo sulla tua barra multifunzione. Questa scheda è il tuo centro di comando per tutto ciò che riguarda la programmazione. Da qui, fai clic sul pulsante Visual Basic (o premi Alt + F11 sulla tastiera) per aprire il Visual Basic Editor (VBE). Questo è l'ambiente in cui scriverai, modificherai e testerai il tuo codice.
Quando apri il VBE per la prima volta, potrebbe sembrare un po' intimidatorio, molto simile ai software degli anni '90. Non preoccuparti; devi concentrarti solo su alcune aree chiave:
Per iniziare a digitare il codice, devi inserire un modulo. Fai clic con il pulsante destro del mouse sulla cartella di lavoro in Gestione progetti, seleziona Inserisci e quindi fai clic su Modulo. Apparirà una schermata bianca vuota. Ora sei pronto per programmare.
Prima di scrivere il programma finale, devi comprendere i tre pilastri della programmazione di base nel VBA: Variabili, Condizioni e Cicli.
Pensa a una variabile come a un contenitore di archiviazione temporaneo nella memoria del tuo computer. Usi le variabili per conservare dati che potrebbero cambiare durante l'esecuzione del programma. Nel VBA, è buona norma "dichiarare" le variabili usando l'istruzione Dim (abbreviazione di Dimension), dicendo a Excel che tipo di dati conterrà il contenitore.
| Tipo di dati | Cosa contiene | Esempio di dichiarazione |
|---|---|---|
| String | Caratteri di testo. | Dim employeeName As String |
| Integer | Numeri interi compresi tra -32.768 e 32.767. | Dim rowCount As Integer |
| Long | Numeri interi più grandi (usa sempre questo per il conteggio delle righe nell'Excel moderno). | Dim lastRow As Long |
| Double | Numeri con decimali (es. valuta, percentuali). | Dim totalSales As Double |
| Boolean | Valori True o False (Vero o Falso). | Dim isComplete As Boolean |
| Range | Un oggetto che rappresenta una cella o un gruppo di celle. | Dim targetCell As Range |
Il VBA funziona manipolando "Oggetti". Excel ha una rigida gerarchia di oggetti in cui devi navigare per dire esattamente al VBA cosa modificare. La gerarchia va dal generale allo specifico:
Application > Workbook > Worksheet > Range
Ad esempio, se vuoi modificare il valore della cella A1 nel Foglio1 (Sheet1), l'istruzione VBA dovrebbe tecnicamente apparire così: Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value = "Hello". Fortunatamente, se stai lavorando nella cartella di lavoro attiva, puoi abbreviare a Range("A1").Value = "Hello".
Proprio come la funzione IF nativa, le condizioni permettono al tuo codice di prendere decisioni in base a criteri. Se una condizione viene soddisfatta, il codice fa una cosa; in caso contrario, ne fa un'altra.
If Range("A1").Value > 100 Then
Range("B1").Value = "Over Budget"
Else
Range("B1").Value = "On Track"
End If
I cicli (loop) sono la vera magia del VBA. Ti permettono di eseguire lo stesso blocco di codice più e più volte senza doverlo scrivere centinaia di volte. Il ciclo più comune è il ciclo For...Next.
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = "Test Data"
Next i
In questo esempio, il codice verrà eseguito 10 volte, riempiendo le celle da A1 ad A10 (Riga i, Colonna 1) con la frase "Test Data".
Mettiamo insieme tutti questi concetti per risolvere un problema del mondo reale. Immagina di avere un elenco di importi di vendita nella Colonna A, dalla riga 2 alla riga 20. Vuoi scrivere un programma che scorra questi numeri, controlli se l'importo delle vendite è superiore a 1.000 $ e, in tal caso, scriva "High Performer" nella Colonna B ed evidenzi la cella in giallo.
Digita il seguente codice nel tuo modulo vuoto, esattamente come appare:
Sub AnalyzeSales()
' 1. Declare variables
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' 2. Define the worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' 3. Find the last row with data in Column A
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' 4. Loop from row 2 to the last row
For i = 2 To lastRow
' 5. Apply the condition
If ws.Cells(i, 1).Value > 1000 Then
' Mark as high performer in Column B
ws.Cells(i, 2).Value = "High Performer"
' Highlight Column B cell yellow
ws.Cells(i, 2).Interior.Color = vbYellow
' Make the text bold
ws.Cells(i, 2).Font.Bold = True
Else
' If not over 1000, leave standard text
ws.Cells(i, 2).Value = "Standard"
End If
Next i
' 6. Alert the user the macro is done
MsgBox "Sales analysis is complete!", vbInformation
End Sub
Sub AnalyzeSales(): "Sub" sta per Subroutine. Questo crea una nuova macro denominata AnalyzeSales.') diventa verde. Questi sono commenti per te; il computer li ignora.Dim è utilizzato per dichiarare il nostro foglio di lavoro, la nostra ultima riga (Long) e la nostra variabile contatore per il ciclo (Long).Set ws = ...: Poiché un foglio di lavoro è un Oggetto, usiamo la parola "Set" per assegnarlo alla nostra variabile.lastRow = ...: Questo è un classico trucco VBA. Va in fondo al foglio di calcolo (Rows.Count), guarda verso l'alto (xlUp) finché non trova dei dati e restituisce quel numero di riga. Questo rende il nostro codice dinamico, in grado di adattarsi indipendentemente dalla quantità di dati aggiunti!For i = 2 To lastRow: Inizia il nostro ciclo alla riga 2 (saltando le intestazioni) e termina a qualsiasi riga sia l'ultima.ws.Cells(i, 1) fa riferimento alla cella alla riga i, colonna 1 (Colonna A). Controlliamo se è maggiore di 1000.Value, Interior.Color e Font.Bold.Next i: Dice a Excel di tornare indietro e aumentare i di 1 per controllare la riga successiva.MsgBox: Un simpatico segnale visivo che attiva una finestra pop-up per far sapere all'utente che l'esecuzione del codice è terminata con successo.Per eseguire il tuo codice, puoi fare clic in un punto qualsiasi tra le righe Sub ed End Sub nel VBE e premere F5 sulla tastiera, oppure fare clic sul triangolo verde "Play" nella barra degli strumenti in alto.
Suggerimento per il debug: Invece di premere F5, prova a premere ripetutamente F8. F8 ti consente di eseguire il codice riga per riga. Evidenzia la riga di codice attiva in giallo, permettendoti di osservare esattamente cosa sta facendo Excel in background. Questo è il modo migliore per imparare e risolvere i problemi quando un programma non funziona correttamente.
Congratulazioni! Hai appena scritto il tuo primo software di automazione. Comprendendo variabili, cicli e condizioni, hai sbloccato i fondamenti necessari per automatizzare i report con Excel VBA. Con la pratica, potrai espandere questa logica per scorrere intere cartelle di lavoro, unire dati da più file e pulire set di dati disordinati con un solo clic.
Mentre continui il tuo percorso, tieni presente che il VBA non è l'unico strumento nel moderno kit di strumenti per i dati. Se preferisci interfacce visive alla programmazione, potresti dare un'occhiata all' automazione di Excel senza VBA: Power Automate.
Inoltre, se scrivere codice da zero, decifrare errori VBA o costruire complesse formule nidificate come INDEX e MATCH ti sembra opprimente, non devi faticare da solo. Puoi sempre usare GPTExcel. Descrivi semplicemente ciò di cui hai bisogno in linguaggio naturale (es. "Scrivi una macro VBA che cancelli tutte le celle gialle nel Foglio1"), e l'assistente IA genererà istantaneamente il codice o la formula esatta.
Non è necessaria alcuna esperienza di programmazione precedente. Il VBA è stato progettato specificamente per essere accessibile ai professionisti del settore. Comprendere la logica di base di Excel, come il funzionamento della funzione IF, ti dà un grande vantaggio nell'imparare la sintassi VBA.
Per impostazione predefinita, le cartelle di lavoro standard di Excel (.xlsx) non possono memorizzare le macro. Quando scrivi codice VBA, devi salvare il file come "Cartella di lavoro con attivazione di macro di Excel" (.xlsm). Se tenti di salvarlo come cartella di lavoro standard, Excel ti avviserà che il tuo codice verrà rimosso.
Sebbene Microsoft stia investendo pesantemente su Power Automate basato su cloud e abbia recentemente integrato Python in Excel, il VBA non andrà da nessuna parte. Milioni di aziende si affidano a macro VBA legacy. Rimane il modo più veloce e affidabile per eseguire l'automazione locale a livello desktop all'interno di un file Excel.
Per rendere la tua macro facile da usare, vai alla scheda Sviluppo, fai clic su Inserisci e seleziona l'icona Pulsante in Controlli modulo. Disegna il pulsante sul tuo foglio di calcolo. Apparirà immediatamente una richiesta che ti chiederà di assegnare una macro: seleziona la tua nuova macro dall'elenco, fai clic su OK e ora potrai eseguire il codice con un semplice clic.
Scopri come automatizzare le attività di Excel senza VBA usando Power Automate. Impara a creare flussi basati su eventi, elaborare dati e connettere altre app.
Scopri come creare sistemi di reportistica automatizzati in Excel usando VBA. Impara a estrarre dati, inserire formule, formattare celle ed esportare report con codice passo-passo.
Inizia a programmare in Excel con VBA. Scopri la scheda Sviluppo, le variabili, i cicli, le condizioni e come scrivere la tua prima macro funzionante da zero.