Come creare Application Level Events in Excel VBA
Gli eventi a livello di applicazione funzionano sull’intera applicazione (Excel in questo riferimento). Ma l’attivazione dell’evento dell’applicazione non è facile come creare la cartella di lavoro o gli eventi del foglio di lavoro. Ma ti assicuro che non è altrettanto complicato. In questo articolo, impareremo come creare e utilizzare l’evento dell’applicazione in Excel VBA in pochi semplici passaggi.
Passaggio 1: creare un oggetto evento in un modulo di classe
Per creare un oggetto evento, dobbiamo utilizzare il modulo di classe.
-
Inserire un
link: / modules-class-modules-in-vba-vba-class-moduli-e-come-usarli [modulo di classe]
. Chiamalo come vuoi. L’ho chiamato MyAppEvents. -
Definire una variabile di evento del tipo di applicazione con la parola chiave WithEvents.
Private WithEvents myApp As Application
-
Inizializza questo evento nella subroutine class_initialize ().
Dal menu a discesa a sinistra, seleziona la classe. Successivamente, nel menu a discesa in alto a destra, seleziona Inizializza.
Private Sub Class_Initialize() Set myApp = Application End Sub
-
Ora definisci gli eventi che desideri utilizzare. Dall’elenco a discesa in alto a sinistra, seleziona l’oggetto evento. Tutte le procedure di gestione degli eventi disponibili saranno disponibili nel menu a discesa in alto a destra. Seleziona quello di cui hai bisogno e definisci cosa vuoi fare quando l’evento si attiva. Immagine: https: //www.office-skill.site/images/wp-content-uploads-2020-01-Capture-37.jpg [immagine, larghezza = 540, altezza = 208]
Uso l’evento SheetActivate. Ogni volta che un utente passerà da un foglio all’altro di qualsiasi cartella di lavoro aperta, mostrerà il nome della cartella di lavoro e l’utente del foglio ha selezionato.
Private Sub myApp_SheetActivate(ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub
Puoi definire tutti gli eventi che desideri definire qui.
Gli eventi non inizieranno a funzionare immediatamente. Questo è stato il primo passo.
Dato che è un modulo di classe, dobbiamo crearne un oggetto per attivare gli eventi.
Ora dobbiamo solo avviare questi eventi da una normale subroutine.
Step2: Crea una subroutine di avvio evento nel modulo normale
Ora abbiamo una classe evento. Dobbiamo solo creare un oggetto di quella classe e inizializzarlo. Una volta eseguita questa subroutine, tutti gli eventi definiti nella classe dell’evento inizieranno a funzionare.
-
Inserisci un modulo normale.
-
Definisci una variabile della classe che hai creato.
Private AppE As MyAppEvents
-
Inizializzalo in una subroutine. Puoi nominarlo come vuoi.
Private Sub StartEvents() Set AppE = New MyAppEvents End Sub
-
Esegui questo codice utilizzando il tasto F5. Facoltativamente, è possibile assegnare questa macro al pulsante nel foglio di lavoro se si desidera avviare gli eventi dal foglio di lavoro.
Ed è fatto. Ora ogni volta che cambierai foglio, apparirà una finestra di messaggio con il nome della cartella di lavoro e del foglio, purché il codice contenente la cartella di lavoro sia aperto.
È stata dura? Non credo proprio. Fammi sapere cosa ne pensi nella sezione commenti qui sotto.
Attivazione e disattivazione degli eventi dell’applicazione VBA Una volta eseguita la macro nel modulo normale, si attiverà sempre finché non si chiude la cartella di lavoro che contiene gli eventi. Ma potresti volere che li accendano e spegnano a tuo piacimento. Ci sono due modi per farlo.
Annullare l’oggetto dell’evento Impostare EnableEvents su False
1. Annullare l’oggetto evento
In una subroutine separata, imposta l’oggetto evento su Nothing
Private Sub StopEvents() Set AppE = Nothing End Sub
Una volta eseguito questo codice, gli eventi smetteranno di funzionare. Puoi metterlo in un pulsante sul foglio di lavoro per interrompere gli eventi. Ora avrai due pulsanti per avviare e interrompere questi eventi specifici. Fermerà semplicemente gli eventi creati dall’oggetto AppE.
2. Imposta EnableEvents su False
Il secondo metodo è disabilitare gli eventi. Per rendere non rilevabili tutti gli eventi impostiamo la proprietà EnableEvents della classe Application su
Falso.
Private Sub StopEvents() Application.EnableEvents= False End Sub
Il codice sopra disabiliterà tutti gli eventi. Anche gli eventi Excel predefiniti. Non funzioneranno fino a quando non li riavvierai. Anche se si esegue la subroutine StartEvents () (sopra), l’evento non funzionerà. Per far funzionare nuovamente tutti gli eventi, sarà necessario impostare nuovamente la proprietà EnableEvents su True.
Quindi, se vuoi che i tuoi eventi funzionino ogni volta che inizi gli eventi, aggiungi questa riga di codice nel sottotitolo.
Private Sub StartEvents() Application.EnableEvents = True Set AppE = New MyAppEvents End Sub
Avvio degli eventi dell’applicazione personalizzata ogni volta che viene aperta la cartella di lavoro Se si sta sviluppando uno strumento per l’utente finale, è possibile che gli eventi funzionino automaticamente. In tal caso, puoi mettere lo starter dell’evento nell’evento link: / events-in-vba-workbook-events-using-vba-in-microsoft-excel [Oggetto cartella di lavoro]
con l’evento Workbook_open (), invece che in un modulo normale. Questo renderà il tuo oggetto evento inizializzato non appena apri la cartella di lavoro che contiene gli eventi.
Quindi sì ragazzi, è così che puoi usare l’evento dell’applicazione in Excel. Fammi sapere se questo è stato abbastanza esplicativo e ti ha aiutato a comprendere gli eventi a livello di applicazione in Excel VBA nella sezione commenti qui sotto. Se hai qualcosa da aggiungere a questo, scrivi anche quello. Puoi porre le tue domande relative a questo articolo o qualsiasi altro argomento relativo a Excel VBA nella sezione commenti qui sotto.
Scarica il file di lavoro qui sotto:
Articoli correlati:
link: / events-in-vba-the-events-in-excel-vba [Gli eventi in Excel VBA]
| Esistono sette tipi di eventi in Excel. Ogni evento si occupa di scopi diversi. L’evento dell’applicazione si occupa a livello di cartella di lavoro. Cartella di lavoro a livello di fogli. Evento del foglio di lavoro a livello di intervallo.
link: / events-in-vba-the-worksheet-events-in-excel-vba [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 il foglio.
link: / events-in-vba-workbook-events-using-vba-in-microsoft-excel [Workbook events using 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, questi eventi funzionano anche su di essi.
link: / events-in-vba-prevent-that-an-automacroeventmacro-executes-using-vba-in-microsoft-excel [Prevent an automacro / eventmacro executes using VBA in Microsoft Excel]
* | Per impedire l’esecuzione della macro auto_open utilizzare il tasto Maiusc.
link: / events-in-vba-chart-object-events-using-vba-in-microsoft-excel [Chart object events using VBA in Microsoft Excel]
* | I grafici sono oggetti complessi e ci sono diversi componenti che hai collegato ad essi. Per creare gli eventi grafico usiamo il modulo Class.
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.