Gli eventi in Excel VBA

Sommario:

Anonim

In generale, gli eventi non sono altro che stanno accadendo di qualcosa. È lo stesso in excel. Ma a volte vogliamo che qualcosa accada automaticamente quando si verifica un determinato evento. Per fare qualcosa quando si verifica un evento specifico in Excel, utilizziamo l'evento VBA di Excel.

Gestori eventi VBA di Excel: tipi

Esistono principalmente 7 tipi di gestori di eventi in Excel VBA.

  1. Eventi applicativi
  2. Eventi della cartella di lavoro
  3. Foglio di lavoro Eventi
  4. Eventi del grafico
  5. Eventi modulo utente
  6. Combinazione di tasti Eventi (eventi dei tasti di scelta rapida)
  7. Eventi puntuali

Esploriamoli uno per uno.

Eventi applicativi in ​​Excel

Gli eventi a livello di applicazione vengono attivati ​​quando l'applicazione (Excel) viene chiusa, aperta, attivata, protetta, non protetta, ecc.

Esistono più di 50 tipi di eventi a livello di applicazione. Quindi non possiamo discuterne tutti qui.

Ambito dell'evento applicativo:

Questi eventi funzioneranno su tutte le cartelle di lavoro di Excel, purché il codice contenente la cartella di lavoro sia aperto. Ad esempio, se hai creato un evento a livello di applicazione per dirti il ​​nome del foglio del foglio attivo, verrà attivato ad ogni attivazione del foglio di qualsiasi cartella di lavoro.

Come creare un gestore di eventi dell'applicazione in VBA?

La creazione dell'evento Applicazione è un po' complicata. L'ho spiegato qui in dettaglio con l'esempio.

Eventi della cartella di lavoro in Excel

Ambito dell'evento della cartella di lavoro

Gli eventi della cartella di lavoro funzionano sull'intera cartella di lavoro che contiene il codice. L'evento può aprire, chiudere, attivare, disattivare, cambiare foglio, ecc.

Dove scrivere gli eventi della cartella di lavoro?

Gli eventi della cartella di lavoro vengono scritti sull'oggetto cartella di lavoro.

Come scrivere un evento Workbook?

Segui questi passi:

1. Nell'esploratore del progetto, fare doppio clic sull'oggetto cartella di lavoro. Verrà visualizzata l'area di scrittura del codice. Tutti gli eventi nell'ambito della cartella di lavoro sono scritti qui.

2. In alto a sinistra dell'area di scrittura del codice, vedrai un menu a discesa. Fare clic sul menu a discesa e scegliere la cartella di lavoro. Per impostazione predefinita è generale.

3. Una volta scelta la cartella di lavoro dal menu a discesa a sinistra, per impostazione predefinita inserirà una subroutine dell'evento workbook_open. Ma se vuoi utilizzare una subroutine di eventi diversa, sceglila dal menu a discesa in alto a destra. Elencherà tutti gli eventi della cartella di lavoro disponibili.

4. Scegli l'evento di cui hai bisogno. Per il bene dell'esempio, scelgo l'evento SheetActivate. Questo evento si attiva su ogni selezione del foglio nel codice che contiene la cartella di lavoro.

Esempio di evento cartella di lavoro:Questo è un semplice esempio. Voglio solo mostrare il nome del foglio di lavoro attivato. Per questo, uso semplicemente l'evento SheetActivate nell'oggetto Workbook.

Sottotitoli privati Workbook_SheetActivate(ByVal Sh come oggetto) MsgBox Sh.Name & "Attivato" End Sub 

Ora, ogni volta che verrà attivato un nuovo foglio su questa cartella di lavoro, questo evento verrà attivato. Ti verrà chiesto con il massaggio, nome del foglio attivato.

So che questo codice non è così utile, ma puoi inserire qualsiasi serie di istruzioni tra queste righe. È possibile chiamare le funzioni e le subroutine dai moduli stessi.

Eventi del foglio di lavoro in Excel

Tutti gli eventi di intervallo e di cella sono scritti negli eventi del foglio di lavoro. Puoi leggere gli eventi del foglio di lavoro qui.

Lo scopo dell'evento del foglio di lavoro

Gli eventi del foglio di lavoro sono destinati agli intervalli e alle celle di un foglio di lavoro specifico. Un evento del foglio di lavoro si attiverà su eventi che si verificano nel foglio di lavoro specifico (il foglio di lavoro che contiene il codice).

Dove sono scritti gli eventi del foglio di lavoro?

Gli eventi del foglio di lavoro vengono scritti nell'oggetto del foglio di lavoro.

Come scrivere un codice di gestione degli eventi del foglio di lavoro?

È uguale agli eventi della cartella di lavoro.

1. In Esplora progetti, fai doppio clic sull'oggetto del foglio di lavoro. L'area di scrittura del codice verrà visualizzata per il foglio di lavoro. Tutti gli eventi con ambito del foglio di lavoro sono scritti in questi fogli di lavoro.

2. In alto a sinistra dell'area di scrittura del codice, vedrai un menu a discesa. Fare clic sul menu a discesa e scegliere il foglio di lavoro. Per impostazione predefinita è generale.

3. Una volta scelto il foglio di lavoro dal menu a discesa a sinistra, per impostazione predefinita inserirà una subroutine di evento worksheet_selectionChange. Ma se vuoi utilizzare una subroutine di eventi diversa, sceglila dal menu a discesa in alto a destra. Elencherà tutti gli eventi del foglio di lavoro disponibili.

4. Scegli l'evento di cui hai bisogno. Per il bene dell'esempio, scelgo l'evento Worksheet_SelectionChange (ByVal Target As Range). Questo evento si attiva ad ogni modifica della selezione di un intervallo sul foglio.

Esempio di evento del foglio di lavoro

Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox "Sei in " & Target.Address End Sub 

L'evento di cui sopra è scritto nel foglio1 di una cartella di lavoro. Questo evento mostrerà l'indirizzo dell'intervallo, che hai selezionato nel foglio contenente il codice, ogni volta che cambierai la selezione dell'intervallo. Di seguito sono riportati altri esempi di eventi del foglio di lavoro.

Gli eventi del foglio di lavoro vengono utilizzati principalmente nei dashboard dinamici. Puoi utilizzare le celle come caselle di controllo o selezioni attive per rendere dinamiche le tue dashboard.

Di seguito sono riportati altri esempi di eventi del foglio di lavoro.

Utilizzo dell'evento di modifica del foglio di lavoro per eseguire la macro quando viene apportata una modifica

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

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

Gli eventi del grafico

Esistono due tipi di eventi del grafico in Excel. Uno sono i grafici normalmente incorporati che abbiamo discusso qui in dettaglio. È molto simile agli eventi a livello di applicazione.

Un altro è il foglio grafico. Questi sono i fogli speciali che contengono solo i grafici collegati ai dati su alcuni altri fogli.

Quando si tratta di eventi, sono molto simili a fogli normali.

Dove scrivere eventi grafici?

Gli eventi del grafico sono scritti nell'oggetto grafico. Basta fare doppio clic sul foglio del grafico per aprire l'area del codice.

Come scrivere eventi grafici?

Segui questi passi:

1. Nell'esploratore del progetto, fare doppio clic sull'oggetto foglio grafico per aprire l'area del codice. Tutti gli eventi specifici relativi al foglio grafico sono scritti qui.

2. Nell'angolo in alto a destra dell'area del codice, vedrai il solito menu a discesa. Seleziona il grafico da quel menu a discesa.

3. Dall'angolo destro, seleziona l'evento che desideri.

Ad esempio, se voglio fare qualcosa non appena l'utente seleziona il grafico, utilizzerò l'evento Chart_Activate.

Esempio: evento foglio grafico

Private Sub Chart_Activate() MsgBox "Il grafico è aggiornato" End Sub 

Il pezzo di codice sopra si attiverà non appena selezionerai il foglio del grafico. Qui mostrerà solo il messaggio che il grafico è aggiornato ma puoi fare molto. Ad esempio, puoi selezionare dinamicamente l'intervallo di dati per il grafico prima di mostrare questo messaggio.

Di seguito sono riportati alcuni altri esempi di eventi del grafico:

Gli eventi UserForm

L'evento del modulo utente è proprio come gli altri eventi. Esistono diversi eventi che si verificano nel modulo utente. È possibile utilizzare quegli eventi per attivare gli eventi.

Dove scrivere gli eventi del modulo utente?

Per scrivere un evento modulo utente, devi prima inserire un modulo utente.

1. Quindi fare clic con il pulsante destro del mouse sul Form utente e fare clic sul codice di visualizzazione. Ora si aprirà l'area del codice.

2. Ora nel menu a discesa in alto a sinistra, seleziona il modulo utente.

3. Dal menu a discesa a sinistra, seleziona l'evento che desideri utilizzare per attivare l'esecuzione del codice.

4. Scrivi il codice che desideri tra il codice dell'evento.

L'esempio seguente mostra semplicemente il messaggio quando viene attivato un modulo utente.

Private Sub UserForm_Activate() MsgBox "Salve, per favore verifica due volte le tue informazioni." Fine sottotitolo 

Il codice sopra mostra solo un messaggio, ma puoi utilizzare questo evento per precompilare il modulo con alcuni input predefiniti o utilizzare le informazioni del foglio per compilarlo.

L'evento Onkey

Questi eventi vengono attivati ​​quando viene premuto un tasto o una combinazione di tasti specificati. È molto simile a creare il tuo su scorciatoie.

L'evento OnKey è in realtà una funzione o un metodo della classe Application che ha due argomenti come mostrato di seguito:

Applicazione.onkey Chiave, ["procedura"]

Il chiave è il tasto o la combinazione di tasti che si desidera utilizzare come trigger.

"Procedura" è un argomento facoltativo che è un nome di stringa della procedura o della macro che si desidera attivare. Se non si definisce la procedura, verrà attivata la procedura corrente.

Dove scrivere gli Eventi Onkey?

Bene, puoi scrivere l'evento Onkey su qualsiasi modulo normale. Funzioneranno in moduli normali, ma prima sarà necessario eseguire quella subroutine che contiene le istruzioni Onkey. Non è che hai eseguito la macro ogni volta per utilizzare gli eventi Onkey. Solo una volta sarà necessario eseguire quella macro quando si apre la cartella di lavoro.

Se non vuoi eseguire la macro che contiene gli eventi Onkey, puoi inserirli nell'evento workbook_open() nell'oggetto cartella di lavoro. Renderà attivi gli eventi Onkey non appena si apre la cartella di lavoro che contiene gli eventi Onkey.

Come scrivere un gestore di eventi Onkey?

Quindi, se hai già alcune macro che vuoi eseguire con una scorciatoia specificata, scrivi una nuova procedura che conterrà l'elenco delle scorciatoie. Ad esempio, qui ho una macro che mostra il messaggio che il collegamento funziona.

Sub show_msg() MsgBox "La scorciatoia funziona" End Sub 

Ora voglio eseguire questa macro mentre premo la combinazione di tasti CTRL+j. Per fare ciò, scrivo il codice VBA di seguito.

Sub Activate_Onkey() Application.OnKey "^j", "show_msg" End Sub

"^" (carate) è per il tasto CTRL. Di seguito è riportata la tabella per tutte le abbreviazioni chiave in Excel VBA.

https://docs.microsoft.com/en-us/office/vba/api/excel.application.onkey

Come attivare l'evento Onkey?

Dopo aver scritto il codice sopra in un modulo, se vai nella vista Excel e usi il tasto CTRL+J, non funzionerà. Innanzitutto, è necessario eseguire il sub che definisce gli eventi OnKey. Quindi esegui una volta il sub Activate_Onkey() e poi funzionerà per l'intera sessione. Una volta chiusa la cartella di lavoro che contiene le definizioni Onkey, smetterà di funzionare.

Puoi inserire le definizioni Onkey all'interno della procedura che vuoi che avvenga. Ma poi dovrai eseguire la macro una volta manualmente. Ecco perché suggerisco di inserire gli eventi Onkey negli eventi Workbook_Open. Farà attivare automaticamente tutti gli eventi Onkey.

L'evento puntuale in Excel

Come suggerisce il nome, l'evento Onkey attiva la subroutine specificata al o dopo il primo tempo specificato possibile. Excel potrebbe essere impegnato in altre attività come l'esecuzione della somma delle istruzioni o la modalità copia passato. In tal caso, potrebbe ritardare l'evento Ontime. Ecco perché l'argomento viene mostrato come la prima volta.

Sintassi dell'evento OnTime

L'evento Ontime è una funzione della classe Application. Ha due argomenti essenziali e due argomenti opzionali.

Application.Ontime EarlyTime, "Procedura",[LatestTime], [Schedule]

IlPrimaOraè il momento in cui vuoi che la tua procedura venga eseguita. Ma Excel eseguirà la macro specificata dopo il primo tempo definito, solo una volta che è gratuito.

Il "Procedura" è il nome della procedura che si desidera eseguire all'ora specificata.

Come ho detto, non esiste alcuna garanzia che Excel eseguirà la procedura all'ora specificata. Il Ultimo tempoè il tempo dopo il primo tempo per dare a Excel una finestra per essere libero ed eseguire il tuo compito.

Se vuoi disattivare l'evento OnTime pianificato, impostaorario a falso.

Dove scrivere l'Ontime Event?

L'evento OnTime può essere scritto in qualsiasi modulo. Dovrai eseguire l'evento contenente la procedura per attivare l'evento.

Se vuoi che il tuo evento venga attivato non appena apri la cartella di lavoro che contiene l'evento, inseriscilo nell'evento workbook_open. Attiverà l'evento non appena aprirai il codice contenente l'evento in excel.

Come scrivere l'evento Ontime?

Supponiamo che tu abbia una subroutine che mostra la data e l'ora correnti

Sub show_msg() MsgBox "La data e l'ora correnti sono " & Now End Sub

Ora, se vuoi che questa procedura venga eseguita dopo 5 secondi dall'esecuzione di un'altra macro, dovrai inserire questo codice.

Sub OnTimeTest() '--alcune altre attività Application.ontime Now + (5/24/60/60), "show_msg" End Sub

Una volta eseguita la subroutine OnTimeTest, dopo cinque secondi dalla sua esecuzione attiverà la subroutine show_msg. Quindi andrà bene se vuoi fare qualcosa dopo alcune volte di fare qualcos'altro, usa la struttura sopra.

Se vuoi che la tua macro venga eseguita da sola dopo pochi secondi/minuti/ore/ecc, puoi chiamare quella funzione stessa. Sarebbe una specie di subroutine ricorsiva.

Sub OnTimeTest() MsgBox "La data e l'ora correnti sono " & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" End Sub

La subroutine di cui sopra verrà eseguita ogni cinque secondi una volta avviata.

Quindi sì ragazzi, questi sono gli eventi in Excel VBA. Alcune delle categorie di cui sopra hanno una vasta gamma di trigger di eventi. Naturalmente, non posso spiegarli tutti qui. Questo farà un lungo articolo da libro. Questa era solo un'introduzione agli eventi disponibili in Excel VBA. Per ulteriori informazioni, seguire i collegamenti incorporati negli articoli. Ho citato alcuni articoli correlati di seguito. Puoi leggerli anche tu.

Se hai dei dubbi relativi a questo articolo o a qualsiasi altro pensiero excel/VBA, chiedici nella sezione commenti qui sotto.

Gli eventi del foglio di lavoro in Excel VBA|Gli eventi del foglio di lavoro sono davvero utili quando si desidera che le macro vengano eseguite quando si verifica un evento specificato sul foglio.

Eventi della cartella di lavoro utilizzando VBA in Microsoft Excel | Gli eventi della cartella di lavoro funzionano sull'intera cartella di lavoro. Poiché tutti i fogli fanno parte della cartella di lavoro, anche questi eventi funzionano su di essi.

Impedisci l'esecuzione di un'automacro/eventmacro utilizzando VBA in Microsoft Excel | Per impedire l'esecuzione della macro auto_open utilizzare il tasto shift.

Eventi dell'oggetto grafico utilizzando VBA in Microsoft Excel | I Grafici sono oggetti complessi e ci sono diversi componenti ad essi collegati. Per creare gli eventi del grafico utilizziamo il modulo Class.

Articoli popolari:

50 scorciatoie di Excel per aumentare la produttività | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente 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.