Gli eventi del foglio di lavoro in Excel VBA

Sommario:

Anonim

Potresti voler eseguire il tuo frammento di macro/VBA quando una cella cambia il suo valore, quando si verifica un doppio clic, quando viene selezionato un foglio, ecc. In tutti questi casi utilizziamo il gestore di eventi del foglio di lavoro. L'Event Handler ci aiuta a eseguire il codice VBA ogni volta che si verifica un determinato evento.

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

Che cos'è un gestore di eventi di 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?

Gli eventi del foglio di lavoro sono scritti solo negli oggetti dei fogli. 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 pulsante destro del mouse 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 foglio di lavoro. Ora, nel menu a discesa nell'angolo in alto a destra, verranno visualizzati tutti gli eventi. Scegli quello di cui hai bisogno e un codice scheletrico per quell'evento verrà scritto per te.

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

Importante: Ogni subroutine di quell'elenco verrà eseguita sull'evento specificato.
Un tipo di procedura evento del foglio di lavoro può essere scritto una sola volta su un foglio. Se si scrivono due stesse procedure di gestione degli eventi su un foglio, si verificherà un errore e nessuna di esse verrà eseguita. Naturalmente, l'errore saranno le subroutine ambigue.

Impariamo brevemente su ciascuno degli eventi.

1. IlWorksheet_Change (ByVal Target As Range)Evento

Questo evento si attiva quando apportiamo modifiche ai fogli di lavoro contenenti (formattazione esclusa). Se vuoi fare qualcosa in caso di modifiche apportate all'intero foglio, il codice sarà:

Private Sub Worksheet_Change (ByVal Target As Range) 'fare qualcosa Msgbox "fatto qualcosa" End Sub 

Il "Target" è la cella sempre attiva.

Un altro esempio: potresti voler inserire data e 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 Obbiettivo.Address = "$A$1" Then Range("B1").Value2 = Format(Now(), "hh:mm:ss") End If End Sub 

Questo avrà come target solo la cella A1.

Se desideri scegliere come target un intervallo, utilizza l'esempio seguente:

Esegui macro se vengono apportate modifiche al foglio nell'intervallo specificato

2. IlWorksheet_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à sulla riga pari, sarà colorato. Le celle di riga dispari verranno risparmiate.

Un altro esempio dell'evento Worksheet_SelectionChange:

Il codice VBA più semplice per evidenziare la riga e la colonna correnti utilizzando

3. Il Foglio di lavoro_Attiva() Evento

Questo evento viene attivato quando si attiva 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 "Sei su " & ActiveSheet.Name End Sub 

Non appena arriverai sul foglio che contiene questo codice, l'evento verrà eseguito e verrà mostrato un messaggio che "Sei sul nome del foglio" (foglio2 è nel mio caso).

4. Il Foglio di lavoro_Disattiva() Evento

Questo evento si attiva quando si lascia il 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() 'il tuo codice' End Sub 

L'esempio di seguito Worksheet_Deativate evento farà semplicemente apparire un messaggio che hai lasciato il foglio principale, quando lascerai questo foglio.

Private Sub Worksheet_Deactivate() MsgBox "Hai lasciato il foglio principale" End Sub 

5. Il Foglio di lavoro_Prima dell'eliminazione()Evento

Questo evento si attiva quando si conferma l'eliminazione dell'evento VBA contenente il foglio. La sintassi è semplice:

Foglio di lavoro secondario privato_BeforeDelete() End Sub 

Il codice seguente ti chiederà se desideri copiare il contenuto del foglio in procinto di eliminare.

Private Sub Worksheet_BeforeDelete() ans = MsgBox("Vuoi copiare il contenuto di questo foglio in un nuovo foglio?", vbYesNo) If ans = True Then 'codice per copiare End If End Sub 

6. Il Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Evento

Questo evento si attiva quando fai 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à ad ogni doppio clic sul foglio.
La variabile Cancel è 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 ha come target la 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.

Sottotitoli privati Foglio di lavoro_Prima di DoubleClick(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 

7. Il Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Evento

Questo evento si attiva quando fai clic con il pulsante destro del mouse sulla cella di destinazione. La sintassi di questo evento del foglio di lavoro VBA è:

Sottotitoli privati Foglio di lavoro_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True ' 'il tuo codice ' 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 di clic destro predefinite 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. Il Foglio di lavoro_Calcola() Evento

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() ' 'il tuo codice ' End Sub 

6. Il Foglio di lavoro_FollowHyperlink(ByVal Target come collegamento ipertestuale)Evento

Questa procedura verrà eseguita quando si fa clic su un collegamento ipertestuale nel foglio. La sintassi di base di questo gestore di eventi è:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ' 'il tuo codice ' End Sub 

Se lo desideri, puoi impostare il collegamento ipertestuale di destinazione. 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 leggere.

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

Utilizzo dell'evento di modifica del foglio di lavoro per eseguire la macro quando viene apportata una modifica| Quindi, per eseguire la tua macro ogni volta che il foglio si aggiorna, utilizziamo gli eventi del foglio di lavoro di VBA.

Esegui macro se vengono apportate modifiche al foglio nell'intervallo specificato| Per eseguire il codice della macro quando cambia il valore in un intervallo specificato, utilizza questo codice VBA. Rileva qualsiasi modifica apportata nell'intervallo specificato e attiverà l'evento.

Il codice VBA più semplice per evidenziare la riga e la colonna correnti utilizzando | Usa questo piccolo frammento VBA per evidenziare la riga e la colonna correnti del foglio.

Articoli popolari:

50 scorciatoie di Excel per aumentare la produttività | Diventa più veloce nel tuo compito. Queste 50 scorciatoie renderanno il tuo lavoro ancora più veloce su Excel.

La funzione CERCA.VERT in Excel | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare il valore da diversi intervalli e fogli.

CONTA.SE in Excel 2016 | Conta i valori con le condizioni usando questa fantastica funzione. Non è necessario filtrare i dati per contare un valore specifico. La funzione Countif è essenziale per preparare la tua dashboard.

Come utilizzare la funzione SOMMA.SE in Excel | Questa è un'altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.