📢 Nuovo Corso Laravel API disponibile!

Esercizi su Macro VBA in Excel

Impara a creare macro VBA in Excel con una serie di esercizi pratici. Scopri come automatizzare attività ripetitive e personalizzare le funzionalità di Excel con il codice VBA.

Esercizi Semplici

Esercizio 1: Creare una Macro Semplice

Crea una macro VBA in Excel che seleziona un intervallo di celle e cambia il colore di sfondo a giallo.

Istruzioni:

  1. Apri Excel e premi Alt + F11 per aprire l’Editor VBA.
  2. Nella finestra di progetto, inserisci un nuovo modulo (Inserisci > Modulo).
  3. Scrivi il seguente codice VBA:
Sub CambiaColoreCelle()
Range("A1:B10").Interior.Color = vbYellow
End Sub
  1. Torna a Excel, vai su Sviluppo > Macro, seleziona CambiaColoreCelle e clicca Esegui.
  2. Verifica che le celle da A1 a B10 siano colorate di giallo.
1. Apri l'Editor VBA (Alt + F11) e inserisci un nuovo modulo.
2. Inserisci il codice per cambiare il colore di sfondo.
3. Esegui la macro e verifica il risultato.

Esercizio 2: Creare una Macro per Riempire Dati

Crea una macro VBA che inserisce automaticamente la data odierna nella cella A1 e i giorni successivi nelle celle sottostanti.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub InserisciDate()
Dim i As Integer
For i = 0 To 9
Cells(i + 1, 1).Value = Date + i
Next i
End Sub
  1. Torna a Excel, esegui la macro InserisciDate.
  2. Verifica che la cella A1 contenga la data odierna e che le celle sotto di essa contengano le date successive.
1. Inserisci il codice per riempire le date nelle celle.
2. Esegui la macro e verifica il risultato.

Esercizio 3: Creare una Macro per Copiare e Incollare Dati

Crea una macro VBA che copia i dati dall'intervallo A1:B10 e li incolla in C1:D10.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub CopiaIncollaDati()
Range("A1:B10").Copy Destination:=Range("C1")
End Sub
  1. Torna a Excel, esegui la macro CopiaIncollaDati.
  2. Verifica che i dati siano stati copiati correttamente da A1:B10 a C1:D10.
1. Inserisci il codice per copiare e incollare i dati.
2. Esegui la macro e verifica il risultato.

Esercizio 4: Creare una Macro con Input da Utente

Crea una macro VBA che chiede all'utente di inserire un numero, quindi riempie la colonna A con quella quantità di numeri consecutivi a partire da 1.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub RiempieNumeri()
Dim num As Integer
num = InputBox("Quanti numeri vuoi inserire?")
For i = 1 To num
Cells(i, 1).Value = i
Next i
End Sub
  1. Torna a Excel, esegui la macro RiempieNumeri.
  2. Inserisci un numero quando richiesto e verifica che la colonna A sia riempita con quella quantità di numeri.
1. Inserisci il codice per chiedere all'utente un input e riempire le celle.
2. Esegui la macro e verifica il risultato.

Esercizio 5: Creare una Macro per Filtrare Dati

Crea una macro VBA che filtra i dati in una tabella per mostrare solo le righe dove la colonna B è maggiore di 50.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub FiltraDati()
Range("A1:C10").AutoFilter Field:=2, Criteria1:=">50"
End Sub
  1. Torna a Excel, esegui la macro FiltraDati.
  2. Verifica che i dati siano filtrati correttamente mostrando solo le righe dove il valore in colonna B è maggiore di 50.
1. Inserisci il codice per filtrare i dati.
2. Esegui la macro e verifica il risultato.

Esercizi Avanzati

Esercizio 6: Creare una Macro per Ordinare Dati

Crea una macro VBA che ordina i dati in una tabella in base ai valori della colonna B in ordine decrescente.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub OrdinaDati()
Range("A1:C10").Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlYes
End Sub
  1. Torna a Excel, esegui la macro OrdinaDati.
  2. Verifica che i dati siano ordinati correttamente in base ai valori della colonna B.
1. Inserisci il codice per ordinare i dati.
2. Esegui la macro e verifica il risultato.

Esercizio 7: Creare una Macro per Inviare Email

Crea una macro VBA che invia un'email tramite Outlook, includendo l'intervallo di celle A1:B10 come tabella nell'email.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub InviaEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "Ciao," & vbNewLine & vbNewLine & _
"Trovi in allegato la tabella con i dati." & vbNewLine & vbNewLine & _
"Cordiali saluti."
On Error Resume Next
With OutMail
.To = "email@example.com"
.CC = ""
.BCC = ""
.Subject = "Dati Importanti"
.HTMLBody = strbody & RangetoHTML(Range("A1:B10"))
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).
PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
.DrawingObjects.Visible = True
.DrawingObjects.Delete
End With
With TempWB.PublishObjects.Add(xlSourceRange, TempFile, _
TempWB.Sheets(1).Name, TempWB.Sheets(1).UsedRange.Address)
.HtmlType = xlHtmlStatic
.Publish (True)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
  1. Torna a Excel, esegui la macro InviaEmail.
  2. Verifica che l’email venga inviata con la tabella inclusa.
1. Inserisci il codice per inviare un'email tramite Outlook.
2. Esegui la macro e verifica che l'email sia stata inviata correttamente.

Esercizio 8: Creare una Macro con Ciclo For Each

Crea una macro VBA che scorre tutte le celle dell'intervallo A1:A10 e evidenzia in rosso quelle con un valore maggiore di 100.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA:
Sub EvidenziaCelle()
Dim cella As Range
For Each cella In Range("A1:A10")
If cella.Value > 100 Then
cella.Interior.Color = vbRed
End If
Next cella
End Sub
  1. Torna a Excel, esegui la macro EvidenziaCelle.
  2. Verifica che le celle con un valore maggiore di 100 siano evidenziate in rosso.
1. Inserisci il codice per evidenziare le celle in base al loro valore.
2. Esegui la macro e verifica il risultato.

Esercizio 9: Creare una Macro per Proteggere e Sproteggere un Foglio

Crea una macro VBA che protegge un foglio con una password e un'altra macro che lo sprotegge.

Istruzioni:

  1. Apri l’Editor VBA e inserisci un nuovo modulo.
  2. Scrivi il seguente codice VBA per proteggere il foglio:
Sub ProteggiFoglio()
ActiveSheet.Protect Password:="1234"
End Sub
  1. Scrivi un altro codice VBA per sproteggere il foglio:
Sub SproteggiFoglio()
ActiveSheet.Unprotect Password:="1234"
End Sub
  1. Torna a Excel, esegui prima la macro ProteggiFoglio e poi la macro SproteggiFoglio.
  2. Verifica che il foglio sia protetto e successivamente sprotetto.
1. Inserisci il codice per proteggere e sproteggere il foglio.
2. Esegui le macro e verifica che il foglio sia protetto/sprotetto correttamente.

Esercizio 10: Creare una Macro per Gestire Eventi del Foglio

Crea una macro VBA che visualizza un messaggio di benvenuto ogni volta che si attiva un determinato foglio in Excel.

Istruzioni:

  1. Apri l’Editor VBA e nella sezione ThisWorkbook, seleziona l’evento Workbook_SheetActivate.
  2. Inserisci il seguente codice:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Foglio1" Then
MsgBox "Benvenuto sul Foglio1!"
End If
End Sub
  1. Torna a Excel, attiva il foglio “Foglio1”.
  2. Verifica che venga visualizzato il messaggio di benvenuto.
1. Inserisci il codice nell'evento Workbook_SheetActivate.
2. Attiva il foglio e verifica che venga visualizzato il messaggio.