fbpx

VBA Tutorial Parte 9: gli eventi di Excel

Cosa sono gli eventi di Excel?

Il termine ‘Eventi’ si riferisce ad azioni specifiche che un utente esegue in Excel. Ad esempio, se l’utente seleziona un foglio di lavoro, questo è un evento. Allo stesso modo, l’immissione di dati in una cella o il salvataggio di una cartella di lavoro sono anch’essi eventi di Excel.

Gli eventi sono collegati a fogli di lavoro, grafici, cartelle di lavoro o all’applicazione Excel stessa. Ciò consente al programmatore di creare il codice vba che viene eseguito automaticamente nel momento in cui si verifica un evento.

Ad esempio, se si desidera eseguire una macro ogni volta che un utente seleziona un qualsiasi foglio di lavoro nella cartella di lavoro, ciò può essere fatto scrivendo il codice vba collegato all’evento della cartella di lavoro ‘SheetActivate’.

In alternativa, se si desidera eseguire una macro ogni volta che viene selezionato un foglio di lavoro specifico (ad esempio ‘Foglio1’), collegare il codice all’evento del foglio di lavoro ‘Activate’ per Foglio1.

 

Come collegare il codice a un evento specifico

  • Apri l’editor VBA (premendo la combinazione di tasti Alt + F11) e apri la finestra Codice per l’oggetto a cui vuoi collegare il codice. Ad esempio, se si desidera eseguire una sezione di codice ogni volta che si verifica un evento in un foglio di lavoro specifico, è necessario aprire la finestra Codice per quel foglio di lavoro.

Questo è mostrato nell’immagine qui sotto:

 

VBA Tutorial Parte 9: gli eventi di Excel 9

 

  • Fai clic sul menu a discesa, nella parte superiore sinistra della finestra Codice e seleziona il tipo di oggetto (ad es. Worksheet). Il menu a discesa sulla destra mostrerà quindi gli eventi definiti per quell’oggetto.

L’immagine seguente mostra gli eventi definiti per un foglio di lavoro di Excel:

 

VBA Tutorial Parte 9: gli eventi di Excel 11

 

  • Seleziona un evento dal menu a discesa in alto a destra. Ciò causa l’inserimento automatico di una procedura Sub nella finestra Codice. Gli argomenti che Excel fornisce automaticamente a quella routine (se ce ne sono) sono inclusi nell’intestazione della Sub, quindi devi solo aggiungere il codice vba per definire cosa vuoi fare quando si verifica quell’evento.

 

Esempio

L’esempio seguente visualizza una finestra di messaggio ogni volta che viene selezionata la cella B1 nel foglio di lavoro ‘Foglio1’.

Per questa azione, dobbiamo utilizzare l’evento del foglio di lavoro ‘SelectionChange’, che si verifica ogni volta che viene selezionata una cella o un intervallo di celle diversi. La procedura Sub ‘Worksheet_SelectionChange’ riceve, come argomento, un oggetto Range chiamato ‘Target’. Questo memorizza l’intervallo di celle che è stato selezionato.

Per questo esempio, vogliamo visualizzare una finestra di messaggio solo quando è stata selezionata la cella B1. Tuttavia, l’evento ‘SelectionChange’ si riferisce a qualsiasi nuova selezione. Pertanto, per questo esempio, dobbiamo controllare l’intervallo fornito, ‘Target’, non appena viene chiamata la procedura, e visualizzare la finestra di messaggio solo se ‘Target’ è uguale alla cella B1. Il codice per questo è mostrato di seguito:

' Codice per mostrare una finestra di messaggio se viene selezionata
' la cella B1 del foglio attivo.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

     ' Verifica se la selezione è la cella B1
     If Target.Count = 1 And Target.Row = 1 And Target.Column = 2 Then

          ' La selezione è la cella B1, quindi esegue le azioni richieste
          MsgBox "Hai selezionato la cella B1"

     End If

End Sub

 

Vai a VBA Tutorial Parte 10 – Gli errori VBA

Torna alla pagina Tutorial VBA