Come creare eventi a livello di applicazione in Excel VBA

Sommario:

Anonim

Gli eventi a livello di applicazione funzionano sull'intera applicazione (Excel in questo riferimento). Ma l'attivazione dell'evento dell'applicazione non è facile come la creazione di eventi della cartella di lavoro o del foglio di lavoro. Ma ti assicuro che non è nemmeno così complicato. In questo articolo impareremo come creare e utilizzare l'evento 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 modulo di classe. Nominalo come vuoi. L'ho chiamato MyAppEvents.
  • Definire una variabile evento di tipo Application 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() Imposta myApp = Application End Sub
  • Ora definisci gli eventi che vuoi utilizzare. Dal menu a discesa in alto a sinistra, seleziona l'oggetto evento. Tutte le procedure di gestione degli eventi disponibili saranno disponibili per te nel menu a discesa in alto a destra. Seleziona quello di cui hai bisogno e definisci cosa vuoi fare quando quell'evento si attiva.
    Uso l'evento SheetActivate. Ogni volta che un utente passerà tra i fogli 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 quanti eventi vuoi definire qui.

Gli eventi non inizieranno a funzionare immediatamente. Questo è stato il primo passo. Poiché si tratta di un modulo di classe, è necessario crearne un oggetto per attivare gli eventi.

Ora abbiamo solo bisogno di avviare questi eventi da una normale subroutine.

Passaggio 2: creare una subroutine di avviamento eventi nel modulo normale

Ora abbiamo una classe evento. Abbiamo solo bisogno di creare un oggetto di quella classe e inizializzarlo. Una volta eseguita questa subroutine, tutti gli eventi definiti nella classe di eventi inizieranno a funzionare.

  • Inserisci un modulo normale.
  • Definisci una variabile della classe che hai creato.
    App privata come MyAppEvents
  • Inizializzalo in una subroutine. Puoi nominarlo come vuoi.
    Private Sub StartEvents() Imposta AppE = New MyAppEvents End Sub
  • Esegui questo codice usando 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 i fogli, verrà visualizzata una finestra di messaggio con il nome della cartella di lavoro e il foglio, purché il codice contenente la cartella di lavoro sia aperto.

È stata dura? Non credo. Fatemi sapere cosa ne pensate 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 spengano a tuo piacimento. Ci sono due modi per farlo.

  • Annulla l'oggetto evento
  • Imposta EnableEvents su False

1. Annullamento dell'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 inserirlo 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 consiste nel disabilitare gli eventi. Per rendere non catturabili tutti gli eventi, impostiamo la proprietà EnableEvents della classe Application su falso.

Private Sub StopEvents() Application.EnableEvents= False End Sub

Il codice precedente disabiliterà tutti gli eventi. Anche gli eventi excel predefiniti. Non funzioneranno finché non li riavvierai. Anche se esegui la subroutine StartEvents() (sopra), l'evento non funzionerà. Per far funzionare nuovamente tutti gli eventi, dovrai impostare nuovamente la proprietà EnableEvents su True.

Quindi, se vuoi che i tuoi eventi funzionino ogni volta che avvii gli eventi, aggiungi questa riga di codice nel sottotitolo.

Private Sub StartEvents() Application.EnableEvents = True Set AppE = New MyAppEvents End Sub

Avvio di eventi dell'applicazione personalizzata ogni volta che si apre la cartella di lavoro

Se stai sviluppando uno strumento per l'utente finale, potresti volere che gli eventi funzionino automaticamente. In tal caso, puoi inserire l'avviatore dell'evento nell'oggetto Workbook 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, ecco come è possibile utilizzare l'evento dell'applicazione in Excel. Fammi sapere se questo è stato abbastanza esplicativo e ti ha aiutato a capire 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 a qualsiasi altro argomento relativo a Excel VBA nella sezione commenti qui sotto.

Scarica il file di lavoro qui sotto:

Gli eventi in Excel VBA | Esistono sette tipi di eventi in Excel. Ogni evento ha un ambito diverso. Evento 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.

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 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.