Los eventos en Excel VBA

Tabla de contenido:

Anonim

En general, los eventos no son más que están sucediendo de algo. Lo mismo ocurre en Excel. Pero a veces queremos que algo suceda automáticamente cuando ocurre un determinado evento. Para hacer algo cuando ocurre un evento específico en Excel, usamos el evento Excel VBA.

Controladores de eventos de Excel VBA: tipos

Hay principalmente 7 tipos de controladores de eventos en Excel VBA.

  1. Eventos de aplicación
  2. Eventos del libro de trabajo
  3. Eventos de la hoja de trabajo
  4. Eventos de gráficos
  5. Eventos de formulario de usuario
  6. Eventos de combinación de teclas (eventos de teclas de método abreviado)
  7. Eventos puntuales

Explorémoslos uno por uno.

Eventos de aplicación en Excel

Los eventos a nivel de la aplicación se activan cuando la aplicación (Excel) se cierra, abre, activa, protege, desprotege, etc.

Hay más de 50 tipos de eventos en el nivel de aplicación. Así que no podemos discutirlos todos aquí.

Alcance del evento de aplicación:

Estos eventos funcionarán en todos los libros de Excel, siempre que el código que contiene el libro de trabajo esté abierto. Por ejemplo, si ha creado un evento de nivel de aplicación para indicarle el nombre de la hoja activa, se activará en cada activación de hoja de cualquier libro de trabajo.

¿Cómo crear un controlador de eventos de aplicación en VBA?

La creación del evento de la aplicación es un poco complicada. Lo he explicado aquí en detalle con un ejemplo.

Eventos del libro de trabajo en Excel

Alcance del evento del libro de trabajo

Los eventos del libro funcionan en todo el libro que contiene el código. El evento puede abrir, cerrar, activar, desactivar, cambiar de hoja, etc.

¿Dónde escribir los eventos del libro de trabajo?

Los eventos del libro se escriben en el objeto del libro.

¿Cómo escribir un evento de libro de trabajo?

Sigue estos pasos:

1. En el explorador de proyectos, haga doble clic en el objeto del libro de trabajo. Se mostrará el área de escritura de código. Todos los eventos del ámbito del libro de trabajo se escriben aquí.

2. En la parte superior izquierda del área de escritura de código, verá un menú desplegable. Haga clic en el menú desplegable y elija el libro de trabajo. Por defecto es general.

3. Una vez que elija el libro de trabajo en el menú desplegable de la izquierda, insertará de forma predeterminada una subrutina de evento workbook_open. Pero si desea utilizar una subrutina de eventos diferente, selecciónela en el menú desplegable de la parte superior derecha. Enumerará todos los eventos del libro de trabajo disponibles.

4. Elija el evento que necesita. Por el bien del ejemplo, elijo el evento SheetActivate. Este evento se activa en cada selección de la hoja en el código que contiene el libro de trabajo.

Ejemplo de evento de libro de trabajo:Este es un ejemplo simple. Solo quiero mostrar el nombre de la hoja de trabajo que está activada. Para eso, simplemente uso el evento SheetActivate en el objeto Libro de trabajo.

Sub privado Workbook_SheetActivate (ByVal Sh As Object) MsgBox Sh.Name y sub final "activado" 

Ahora, siempre que se active una nueva hoja en este libro, este evento se activará. Se le pedirá el masaje, el nombre de la hoja activado.

Sé que este código no es tan útil, pero puede poner cualquier conjunto de instrucciones entre estas líneas. Puede llamar a las funciones y subrutinas desde los propios módulos.

Eventos de hoja de trabajo en Excel

Todos los eventos de rango y dirigidos a celdas se escriben en los eventos de la hoja de trabajo. Puede leer sobre los eventos de la hoja de trabajo aquí.

El alcance del evento de la hoja de trabajo

Los eventos de la hoja de trabajo están dirigidos a los rangos y celdas de una hoja de trabajo específica. Un evento de hoja de trabajo se activará en eventos que sucedan en la hoja de trabajo específica (la hoja de trabajo que contiene el código).

¿Dónde se escriben los eventos de la hoja de trabajo?

Los eventos de la hoja de trabajo se escriben en el objeto de la hoja de trabajo.

¿Cómo escribir un código de manejo de eventos de hoja de trabajo?

Es lo mismo que los eventos del libro de trabajo.

1. En el explorador de proyectos, haga doble clic en el objeto de la hoja de trabajo. Se mostrará el área de escritura de código para la hoja de trabajo. Todos los eventos del ámbito de la hoja de trabajo se escriben en estas hojas de trabajo.

2. En la parte superior izquierda del área de escritura de código, verá un menú desplegable. Haga clic en el menú desplegable y elija la hoja de trabajo. Por defecto es general.

3. Una vez que elija la hoja de trabajo del menú desplegable de la izquierda, insertará de forma predeterminada una subrutina de evento worksheet_selectionChange. Pero si desea utilizar una subrutina de eventos diferente, selecciónela en el menú desplegable de la parte superior derecha. Enumerará todos los eventos de hoja de trabajo disponibles.

4. Elija el evento que necesita. Por el bien del ejemplo, elijo el evento Worksheet_SelectionChange (ByVal Target As Range). Este evento se activa con cada cambio de la selección de un rango en la hoja.

Ejemplo de evento de hoja de trabajo

Private Sub Worksheet_SelectionChange (ByVal Target As Range) MsgBox "Estás en" & Target.Address End Sub 

El evento anterior está escrito en la hoja 1 de un libro de trabajo. Este evento mostrará la dirección del rango, que ha seleccionado en la hoja que contiene el código, siempre que cambie la selección del rango. A continuación se muestran algunos ejemplos más de eventos de la hoja de trabajo.

Los eventos de la hoja de trabajo se utilizan principalmente en paneles dinámicos. Puede usar celdas como casillas de verificación o selecciones activas para hacer que sus cuadros de mando sean dinámicos.

A continuación se muestran algunos ejemplos más de eventos de la hoja de trabajo.

Uso del evento de cambio de hoja de trabajo para ejecutar una macro cuando se realiza algún cambio

Ejecutar macro si se realiza algún cambio en la hoja en el rango especificado

El código VBA más simple para resaltar la fila y columna actual usando

Los eventos del gráfico

Hay dos tipos de eventos de gráficos en Excel. Uno son los gráficos normalmente incrustados que hemos discutido aquí en detalle. Es muy parecido a los eventos de nivel de aplicación.

Otro es la hoja de gráfico. Estas son las hojas especiales que solo contienen los gráficos conectados a los datos de algunas otras hojas.

Cuando se trata de eventos, se parecen mucho a las sábanas normales.

¿Dónde escribir gráficos de eventos?

Los eventos del gráfico se escriben en el objeto gráfico. Simplemente haga doble clic en la hoja del gráfico para abrir el área de código.

¿Cómo escribir eventos de gráficos?

Sigue estos pasos:

1. En el explorador de proyectos, haga doble clic en el objeto de la hoja del gráfico para abrir el área de código. Todos los eventos específicos relacionados con la hoja de gráficos están escritos aquí.

2. En la esquina superior derecha del área de código, verá el menú desplegable habitual. Seleccione el gráfico de ese menú desplegable.

3. En la esquina derecha, seleccione el evento que desee.

Por ejemplo, si quiero hacer algo tan pronto como el usuario seleccione el gráfico, usaré el evento Chart_Activate.

Ejemplo: evento de hoja de gráfico

Private Sub Chart_Activate () MsgBox "El gráfico está actualizado" End Sub 

El código anterior se activará tan pronto como seleccione la hoja del gráfico. Aquí, solo mostrará el mensaje de que el gráfico se actualizó, pero puede hacer muchas cosas. Al igual que, puede seleccionar dinámicamente el rango de datos para el gráfico antes de mostrar este mensaje.

A continuación se muestran algunos ejemplos más de eventos de gráficos:

Los eventos de UserForm

El evento de formulario de usuario es como otros eventos. Hay varios eventos que ocurren en el formulario de usuario. Puede utilizar esos eventos para desencadenar los eventos.

¿Dónde escribir los eventos del formulario de usuario?

Para escribir un evento de formulario de usuario, primero debe insertar un formulario de usuario.

1. Luego, haga clic con el botón derecho en el formulario de usuario y haga clic en el código de vista. Ahora se abrirá el área de código.

2. Ahora, en la parte superior izquierda, seleccione el formulario de usuario.

3. En el menú desplegable de la izquierda, seleccione el evento que desea utilizar para desencadenar la ejecución del código.

4. Escriba el código que desee entre el código de evento de código.

El siguiente ejemplo simplemente muestra el mensaje cuando se activa un formulario de usuario.

Private Sub UserForm_Activate () MsgBox "Hola, por favor verifique su información". End Sub 

El código anterior solo muestra un mensaje, pero puede usar este evento para completar previamente el formulario con algunas entradas predeterminadas o usar la información de la hoja para completarlo.

El evento Onkey

Estos eventos se activan cuando se presiona una tecla o combinación de teclas específicas. Es muy parecido a crear el tuyo en atajos.

El evento OnKey es en realidad una función o método de la clase Application que tiene dos argumentos, como se muestra a continuación:

Application.onkey Clave, ["procedimiento"]

los llave es la tecla o combinación de teclas que desea utilizar como disparador.

"Procedimiento" es un argumento opcional que es un nombre de cadena del procedimiento o macro que desea activar. Si no define el procedimiento, activará el procedimiento actual.

¿Dónde escribir los eventos de Onkey?

Bueno, puedes escribir el evento Onkey en cualquier módulo normal. Funcionarán en módulos normales, pero primero, deberá ejecutar esa subrutina que contiene las instrucciones Onkey. No es como si hubiera ejecutado la macro cada vez que usaba los eventos de Onkey. Solo una vez, será necesario que ejecute esa macro cuando abra el libro de trabajo.

Si no desea ejecutar la macro que contiene los eventos Onkey, puede colocarlos en el evento workbook_open () en el objeto del libro de trabajo. Hará que los eventos de Onkey estén activos tan pronto como abra el libro de trabajo que contiene los eventos de Onkey.

¿Cómo escribir un controlador de eventos Onkey?

Por lo tanto, si ya tiene algunas macros que desea ejecutar con un acceso directo específico, escriba un nuevo procedimiento que contendrá la lista de accesos directos. Por ejemplo, aquí tengo una macro que muestra el mensaje de que el acceso directo está funcionando.

Sub show_msg () MsgBox "El atajo está funcionando" End Sub 

Ahora quiero ejecutar esta macro mientras presiono la combinación de teclas CTRL + j. Para hacerlo, escribo el siguiente código VBA.

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

"^" (carate) es para la tecla CTRL. A continuación se muestra la tabla para todas las abreviaturas clave en Excel VBA.

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

¿Cómo activar el evento Onkey?

Después de escribir el código anterior en un módulo, si va a la vista de Excel y usa la tecla CTRL + J, no funcionará. Primero, debe ejecutar el sub que define los eventos OnKey. Así que ejecute una vez el sub Activate_Onkey () y luego funcionará durante toda la sesión. Una vez que cierre el libro de trabajo que contiene las definiciones de Onkey, dejará de funcionar.

Puede poner las definiciones de Onkey dentro del procedimiento que desea que suceda. Pero luego tendrá que ejecutar la macro una vez manualmente. Por eso sugiero poner los eventos Onkey en los eventos Workbook_Open. Hará que todos los eventos de Onkey se activen automáticamente.

El evento Ontime en Excel

Como sugiere el nombre, el evento Onkey dispara la subrutina especificada en o después del tiempo especificado más temprano posible. Excel puede estar ocupado en algunas otras tareas, como ejecutar el conjunto de instrucciones sumadas o estar en modo de copia pasada. En ese caso, puede retrasar el evento Ontime. Es por eso que el argumento se muestra como el momento más antiguo.

Sintaxis de OnTime Event

El evento Ontime es una función de la clase Application. Tiene dos argumentos esenciales y dos opcionales.

Application.Ontime EarliestTime, "Procedimiento", [LatestTime], [Schedule]

losHora mas tempranaes el momento en el que desea que se ejecute el procedimiento. Pero Excel ejecutará la macro especificada después del tiempo más temprano definido, solo una vez que esté libre.

los "Procedimiento" es el nombre del procedimiento que desea ejecutar a la hora especificada.

Como dije, no hay garantía de que Excel ejecute su procedimiento en el momento especificado. los LastestTimees el momento posterior al primer momento para darle a Excel una ventana para que esté libre y ejecute su tarea.

Si desea desactivar su evento OnTime programado, configurecalendario a falso.

¿Dónde escribir el Ontime Event?

El evento OnTime se puede escribir en cualquier módulo. Deberá ejecutar el evento que contiene el procedimiento para activar el evento.

Si desea que su evento se active tan pronto como abra el libro de trabajo que contiene el evento, colóquelo en el evento workbook_open. Activará el evento tan pronto como abras el código que contiene el evento en Excel.

¿Cómo escribir el evento Ontime?

Digamos que tiene una subrutina que muestra la fecha y hora actuales

Sub show_msg () MsgBox "La fecha y hora actual es" y ahora finaliza Sub

Ahora, si desea que este procedimiento se ejecute después de 5 segundos de ejecución de otra macro, deberá ingresar este código.

Sub OnTimeTest () ': algunas otras tareas Application.ontime Now + (5/24/60/60), "show_msg" End Sub

Una vez que ejecute la subrutina OnTimeTest, después de cinco segundos de su ejecución, activará la subrutina show_msg. Por lo tanto, será bueno si desea hacer algo después de algunas veces de hacer otra cosa, use la estructura anterior.

Si desea que su macro se ejecute por sí sola cada pocos segundos / minutos / horas / etc., entonces puede llamar a esa función. Sería una especie de subrutina recursiva.

Sub OnTimeTest () MsgBox "La fecha y hora actual es" & Now Application.ontime Now + (5/24/60/60), "OnTimeTest" End Sub

La subrutina anterior se ejecutará después de cada cinco segundos una vez que la inicie.

Así que sí, chicos, estos son los eventos en Excel VBA. Algunas de las categorías anteriores tienen una gran variedad de factores desencadenantes. Por supuesto, no puedo explicarlos todos aquí. Eso hará que un libro sea un artículo largo. Esto fue solo una introducción a los eventos disponibles en Excel VBA. Para obtener más información, siga los enlaces incorporados a lo largo de los artículos. He mencionado algunos artículos relacionados a continuación. También puedes leerlos.

Si tiene alguna duda relacionada con este artículo o cualquier otro pensamiento de Excel / VBA, pregúntenos en la sección de comentarios a continuación.

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 accesos directos le permitirán trabajar 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.