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 de trabajo o de 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: crear un objeto de evento en un módulo de clase
Para crear un objeto de evento, necesitamos usar el módulo de clase.
- Inserta un módulo de clase. Nómbralo como quieras. Lo llamé MyAppEvents.
- Defina una variable de evento de tipo Aplicación con la palabra clave WithEvents.
Privado WithEvents myApp como aplicación
- 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.
Private Sub Class_Initialize () Establecer 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 se active ese evento.
Yo uso el evento SheetActivate. Siempre que un usuario cambie entre las hojas de cualquier libro de trabajo abierto, mostrará el nombre del libro de trabajo 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í.
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: crear una subrutina de inicio de eventos 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.
- Inserte un módulo normal.
- Defina una variable de la clase que ha creado.
Aplicación privada como MyAppEvents
- Inicializarlo en una subrutina. Puedes nombrarlo como quieras.
Private Sub StartEvents () Establecer 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 esta hecho. 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.
¿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.
- Anular el objeto de evento
- Establezca EnableEvents en False
1. Anulación del objeto de evento
En una subrutina separada, establezca el objeto de evento en Nothing
Private Sub StopEvents () Establecer 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 consiste en 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 desactivará 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 vuelvan a funcionar, deberá volver a establecer la propiedad EnableEvents 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
Inicio de eventos de aplicación personalizados cada vez que se abre el libro de trabajo
Si está desarrollando una herramienta para el usuario final, es posible que desee que los eventos funcionen automáticamente. En ese caso, puede colocar el iniciador de eventos en el objeto Workbook con el evento Workbook_open (), en lugar de en un módulo normal. Esto hará que su objeto de evento se inicialice tan pronto como abra el libro de trabajo que contiene los eventos.
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.
Descargue el archivo de trabajo a continuación:
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.
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 hoja.
Eventos del libro de trabajo usando VBA en 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.
Evitar 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.
Graficar eventos de objetos 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.
Articulos populares:
50 accesos directos 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.
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.
CONTAR.SI 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.
Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.