Los eventos de nivel de aplicación funcionan en toda la aplicación (Excel en esta referencia). Pero activar el evento de la aplicación no es tan fácil como crear eventos de libro o hoja de trabajo. Pero te aseguro que tampoco es tan complicado. En este artículo, aprenderemos cómo crear y usar el evento de aplicación en Excel VBA en unos sencillos pasos.

Paso 1: Cree un objeto de evento en un módulo de clase

Para crear un objeto de evento, necesitamos usar el módulo de clase.

  • Inserte un enlace: / modules-class-modules-in-vba-vba-class-modules-and-how-to-use-them [class module]. Nómbralo como quieras. Lo llamé MyAppEvents.

  • Defina una variable de evento de tipo Aplicación con la palabra clave WithEvents.

Private WithEvents myApp As Application
  • Inicialice este evento en la subrutina class_initialize ().

En el menú desplegable de la izquierda, seleccione clase. Luego, en el menú desplegable superior derecho, seleccione inicializar.

image

Private Sub Class_Initialize()

Set myApp = Application

End Sub
  • Ahora defina los eventos que desea utilizar. En el menú desplegable de la parte superior izquierda, seleccione el objeto de evento. Todos los procedimientos de manejo de eventos disponibles estarán disponibles para usted en el menú desplegable de la parte superior derecha. Seleccione lo que necesite y defina lo que desea hacer cuando ese evento se active. Imagen: https: //www.office-skill.site/images/wp-content-uploads-2020-01-Capture-37.jpg [image, ancho = 540, alto = 208]

Yo uso el evento SheetActivate. Siempre que un usuario cambie entre hojas de cualquier libro abierto, mostrará el nombre del libro y la hoja que el usuario ha seleccionado.

Private Sub myApp_SheetActivate(ByVal Sh As Object)

MsgBox ActiveWorkbook.Name & "-" & Sh.Name

End Sub

Puede definir tantos eventos como desee definir aquí.

image

Los eventos no comenzarán a funcionar de inmediato. Este fue el primer paso.

Dado que es un módulo de clase, necesitamos crear un objeto para que los eventos se activen.

Ahora solo necesitamos iniciar estos eventos desde una subrutina normal.

Paso 2: Cree una subrutina de inicio de evento en el módulo normal

Ahora tenemos una clase de eventos. Solo necesitamos crear un objeto de esa clase e inicializarlo. Una vez que ejecutamos esta subrutina, todos los eventos definidos en la clase de eventos comenzarán a funcionar.

image

  • Insertar un módulo normal.

  • Defina una variable de la clase que ha creado.

Private AppE As MyAppEvents
  • Inicializarlo en una subrutina. Puedes nombrarlo como quieras.

Private Sub StartEvents()

Set AppE = New MyAppEvents

End Sub

  • Ejecute este código con la tecla F5. Opcionalmente, puede asignar esta macro al botón de la hoja de trabajo si desea iniciar los eventos desde la hoja de trabajo.

Y ya está. Ahora, cada vez que cambie de hoja, aparecerá un cuadro de mensaje con el nombre del libro de trabajo y la hoja, siempre que el código que contiene el libro de trabajo esté abierto.

image

¿Fue duro? No lo creo. Déjame saber lo que piensas en la sección de comentarios a continuación.

Activación y desactivación de eventos de la aplicación VBA Una vez que ejecute la macro en el módulo normal, se activará siempre hasta que cierre el libro de trabajo que contiene los eventos. Pero es posible que desee que los enciendan y apaguen a su antojo. Hay dos maneras de hacer esto.

Anule el objeto de evento Establezca EnableEvents en False

1. Anulando el objeto de evento

En una subrutina separada, establezca el objeto de evento en Nothing

Private Sub StopEvents()

Set AppE = Nothing

End Sub

Una vez que ejecute este código, los eventos dejarán de funcionar. Puede ponerlo en un botón en la hoja de trabajo para detener los eventos. Ahora tendrá dos botones para iniciar y detener estos eventos específicos. Simplemente detendrá los eventos creados por el objeto AppE.

2. Establezca EnableEvents en False

El segundo método es desactivar los eventos. Para que todos los eventos no se puedan capturar, establecemos la propiedad EnableEvents de la clase Application en

Falso.

Private Sub StopEvents()

Application.EnableEvents= False

End Sub

El código anterior deshabilitará todos los eventos. Incluso los eventos de Excel predeterminados. No funcionarán hasta que los vuelva a iniciar. Incluso si ejecuta la subrutina StartEvents () (arriba), el evento no funcionará. Para que todos los eventos funcionen nuevamente, deberá establecer la propiedad EnableEvents nuevamente en True.

Entonces, si desea que sus eventos funcionen cada vez que inicie los eventos, agregue esta línea de código en el sub.

Private Sub StartEvents()

Application.EnableEvents = True

Set AppE = New MyAppEvents

End Sub

image

Así que sí, chicos, así es como pueden usar el evento de la aplicación en Excel. Hágame saber si esto fue lo suficientemente explicativo y lo ayudó a comprender los eventos de nivel de aplicación en Excel VBA en la sección de comentarios a continuación. Si tiene algo que agregar a esto, anótelo también. Puede hacer sus consultas relacionadas con este artículo o cualquier otro tema relacionado con Excel VBA en la sección de comentarios a continuación.

Descarga el archivo de trabajo a continuación:

image 48

Artículos relacionados:

link: / events-in-vba-the-events-in-excel-vba [Los eventos en Excel VBA] | Hay siete tipos de eventos en Excel. Cada evento tiene un alcance diferente. El evento de aplicación se ocupa a nivel de libro de trabajo. Libro de trabajo a nivel de hojas. Evento de hoja de trabajo a nivel de rango.

link: / events-in-vba-the-worksheet-events-in-excel-vba [Los eventos de la hoja de trabajo en Excel VBA] * | El evento de la hoja de trabajo es realmente útil cuando desea que sus macros se ejecuten cuando ocurre un evento específico en la sábana.

link: / events-in-vba-workbook-events-using-vba-in-microsoft-excel [Workbook events using VBA in Microsoft Excel] | Los eventos del libro funcionan en todo el libro. Dado que todas las hojas son parte del libro de trabajo, estos eventos también funcionan en ellas.

link: / events-in-vba-prevent-that-an-automacroeventmacro-execute-using-vba-in-microsoft-excel [Impedir que un automacro / eventmacro se ejecute usando VBA en Microsoft Excel] * | Para evitar la ejecución de la macro auto_open use la tecla shift.

link: / events-in-vba-chart-object-events-using-vba-in-microsoft-excel [Eventos de objeto de gráfico usando VBA en Microsoft Excel] * | Los gráficos son objetos complejos y hay varios componentes que se les adjuntan. Para hacer los eventos del gráfico usamos el módulo Clase.

Artículos populares:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentar-su-productividad [50 atajos de Excel para aumentar su productividad] | Acelera tu tarea. Estos 50 atajos harán que su trabajo sea aún más rápido en Excel.

enlace: / fórmulas-y-funciones-introducción-de-función-vlookup [La función BUSCARV en Excel] | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas.

enlace: / tips-countif-in-microsoft-excel [COUNTIF en Excel 2016] | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar un valor específico.

La función Countif es esencial para preparar su tablero.

link: / excel-formula-and-function-excel-sumif-function [Cómo utilizar la función SUMIF en Excel] | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.