Potresti voler eseguire la tua macro / frammento VBA quando una cella cambia il suo valore, quando si verifica un doppio clic, quando viene selezionato un foglio, ecc. In tutti questi casi usiamo il gestore degli eventi del foglio di lavoro. Il gestore eventi ci aiuta a eseguire il codice VBA ogni volta che si verifica un determinato evento.

In questo articolo, impareremo brevemente su ogni gestore di eventi del foglio di lavoro.

Che cos’è un gestore di eventi dei fogli di lavoro? Un gestore di eventi del foglio di lavoro è una subroutine locale a un modulo del foglio di lavoro.

Dove scrivere il codice del gestore eventi del foglio di lavoro?

image

Gli eventi del foglio di lavoro vengono scritti solo negli oggetti del foglio. Se scrivi un evento del foglio di lavoro in qualche modulo o modulo di classe, non ci saranno errori ma semplicemente non funzioneranno.

Per scrivere nell’oggetto di lavoro. Fare doppio clic su di esso o fare clic con il tasto destro e fare clic su Visualizza codice. Verrà visualizzata l’area di scrittura del codice.

Come scrivere il codice per un evento specifico sul foglio di lavoro?

Ora, quando sei in modalità di modifica, nel menu a discesa nell’angolo in alto a sinistra vedrai generale. Fare clic sul menu a discesa e selezionare il foglio di lavoro.

Ora nel menu a discesa nell’angolo in alto a destra, verranno visualizzati tutti gli eventi. Scegli quello che ti serve e un codice scheletrico per quell’evento verrà scritto per te.

image

Ogni evento ha un nome di procedura fisso. Questi sono i nomi di subroutine riservati. Non puoi usarli per altre subroutine su un foglio. In un modulo, funzioneranno come una normale subroutine.

Importante: Ogni subroutine da quell’elenco verrà eseguito sull’evento specificato.

Un tipo di procedura evento del foglio di lavoro può essere scritto solo una volta su un foglio. Se si scrivono due stesse procedure di gestione degli eventi su un foglio, verrà generato un errore e nessuna di esse verrà eseguita. Ovviamente l’errore sarà subroutine ambigue.

Impariamo brevemente su ciascuno degli eventi.

1. Evento TheWorksheet_Change (ByVal Target As Range) Questo evento si attiva quando si apportano modifiche ai fogli di lavoro contenenti (formattazione esclusa). Se vuoi fare qualcosa se vengono apportate modifiche all’intero foglio, il codice sarà:

Private Sub Worksheet_Change(ByVal Target As Range)

'do somehting

Msgbox "done something"

End Sub

Il “Target” è sempre la cella Attiva.

Un altro esempio: potresti voler inserire la data e l’ora nella cella B1 se A1 cambia. In tal caso, utilizziamo l’evento worksheet_change. Il codice sarebbe simile a questo:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then

Range("B1").Value2 = Format(Now(), "hh:mm:ss")

End If

End Sub

Questo mirerà solo alla cella A1.

Se vuoi scegliere un intervallo, usa l’esempio seguente:

link: / events-in-vba-run-macro-if-any-change-made-on-sheet-range [Run Macro If Any Change Made on Sheet in Specified Range]

2. TheWorksheet_SelectionChange (ByVal Target As Range) * Evento Come suggerisce il nome, questo evento si attiva quando la selezione cambia. In altre parole, se il cursore si trova nella cella A1 e si sposta su un’altra cella, verrà eseguito il codice in questa subroutine.

Il codice seguente cambierà il colore delle celle attive se ogni volta che cambia e se è una riga pari.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row Mod 2 = 0 Then

Target.Interior.ColorIndex = 22

End If

End Sub

Ora, ogni volta che il mio cursore si sposterà su una riga pari, sarà colorato. Le celle delle righe dispari verranno risparmiate.

image

Un altro esempio dell’evento Worksheet_SelectionChange:

link: / events-in-vba-semplicest-vba-code-to-highlight-current-row-and-column-using [Semplice codice VBA per evidenziare riga e colonna correnti usando]

3. Evento Worksheet_Activate () Questo evento viene attivato quando viene attivato il codice evento contenente il foglio.

Il codice scheletrico per questo evento è:

Private Sub Worksheet_Activate()

End Sub

Un semplice esempio mostra il nome del foglio quando viene selezionato.

Private Sub Worksheet_Activate()

MsgBox "You are on " & ActiveSheet.Name

End Sub

Non appena verrai sul foglio che contiene questo codice, l’evento verrà eseguito e ti verrà mostrato un messaggio che “Sei sul nome del foglio”

(sheet2 è nel mio caso).

4. Evento Worksheet_Deactivate () Questo evento si attiva quando si esce dal foglio contenente il codice. In altre parole, se vuoi fare qualcosa, come nascondere righe o altro quando lasci il foglio, usa questo evento VBA. La sintassi è:

Private Sub Worksheet_Deactivate()

'your code

'

End Sub

L’esempio di seguito dell’evento Worksheet_Deativate mostrerà semplicemente un messaggio che hai lasciato il foglio principale, quando lascerai questo foglio.

Private Sub Worksheet_Deactivate()

MsgBox "You Left The Master Sheet"

End Sub

image

===

5. Evento Worksheet_BeforeDelete () * Questo evento si attiva quando si conferma l’eliminazione dell’evento VBA contenente il foglio. La sintassi è semplice:

Private Sub Worksheet_BeforeDelete()

End Sub

Il codice seguente ti chiederà se desideri copiare il contenuto del foglio che sta per essere eliminato.

Private Sub Worksheet_BeforeDelete()

ans = MsgBox("Do you want to copy the content of this sheet to a new sheet?", vbYesNo)

If ans = True Then

'code to copy

End If

End Sub

6. TheWorksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) * Evento Questo evento si attiva quando si fa doppio clic sulla cella di destinazione. La sintassi di questo evento del foglio di lavoro VBA è:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Se non imposti la cella o l’intervallo di destinazione, si attiverà a ogni doppio clic sul foglio.

La variabile Annulla è una variabile booleana. Se lo imposti su True, l’azione predefinita non verrà eseguita. Significa che se fai doppio clic sulla cella non entrerà in modalità di modifica.

Il codice seguente farà riempire la cella con un colore se fai doppio clic su qualsiasi cella.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Interior.ColorIndex = 7

End Sub

Il codice seguente è destinato alla cella A1. Se è già riempito con il colore specificato, il colore svanirà. È molto simile a un pulsante Mi piace o a una casella di controllo.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Address = "$A$1" Then



Cancel = True

If Target.Interior.ColorIndex = 4 Then

Target.Interior.ColorIndex = xlColorIndexNone

Else

Target.Interior.ColorIndex = 4

End If



End If



End Sub

image

7. TheWorksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) * Evento Questo evento si attiva quando si fa clic con il pulsante destro del mouse sulla cella di destinazione. La sintassi di questo evento del foglio di lavoro VBA è:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

'

'your code

'

End Sub

Il codice seguente riempirà la cella con il valore 1 se fai clic con il pulsante destro del mouse su di esso.

Non mostrerà le opzioni predefinite per il clic con il tasto destro poiché abbiamo impostato l’operatore “Annulla” su True.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Value = 1

End Sub

8. Evento TheWorksheet_Calculate () * Se vuoi che accada qualcosa quando un Excel calcola un foglio, usa questo evento. Si attiverà ogni volta che Excel calcola un foglio. La sintassi è semplice:

Private Sub Worksheet_Calculate()

'

'your code

'

End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

'

'your code

'

End Sub

È possibile impostare il collegamento ipertestuale di destinazione, se lo si desidera. Se non si imposta il collegamento ipertestuale di destinazione, verrà eseguito se si fa clic su un collegamento ipertestuale nel foglio contenente il codice.

Quindi sì ragazzi, questi erano alcuni eventi di base del foglio di lavoro che saranno utili se li conosci. Di seguito sono riportati alcuni articoli correlati che potresti voler leggere.

Se hai dubbi su questo articolo o su qualsiasi altro articolo relativo a Excel / VBA, faccelo sapere nella sezione commenti qui sotto.

Articoli correlati:

link: / tips-using-worksheet-change-event-to-run-macro-when-any-change-is-made [Using Worksheet Change Event To Run Macro When any Change is made] * | Quindi, per eseguire la macro ogni volta che il foglio viene aggiornato, utilizziamo gli eventi del foglio di lavoro di VBA.

link: / events-in-vba-run-macro-if-any-change-made-on-sheet-range [Run Macro If Any Change Made on Sheet in Specified Range] * | Per eseguire il codice macro quando il valore in un intervallo specificato cambia, utilizzare questo codice VBA. Rileva qualsiasi modifica effettuata nell’intervallo specificato e attiverà l’evento.

link: / events-in-vba-semplice-vba-code-to-highlight-current-row-and-column-using [Codice VBA più semplice per evidenziare riga e colonna correnti utilizzando] | Usa questo piccolo frammento VBA per evidenziare la riga e la colonna correnti del foglio.

Articoli popolari:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentare-la-produttività [50 scorciatoie Excel per aumentare la produttività] | Diventa più veloce nel tuo compito. Queste 50 scorciatoie renderanno il tuo lavoro ancora più veloce su Excel.

link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel] | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Contare i valori con le condizioni utilizzando questa straordinaria funzione. Non è necessario filtrare i dati per contare un valore specifico.

La funzione Countif è essenziale per preparare la tua dashboard.

link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel] | Questa è un’altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.