Cómo usar eventos de libros de trabajo en VBA

Tabla de contenido:

Anonim

Es posible que desee ejecutar su fragmento de macro / VBA cuando se selecciona un libro de trabajo específico, se selecciona una hoja en el libro de trabajo, la celda cambia su valor, cuando ocurre un doble clic, cuando se agrega una hoja, etc. En todos estos casos usamos Controlador de eventos del libro de trabajo. El controlador de eventos nos ayuda a ejecutar código VBA cada vez que ocurre un evento determinado.

En este artículo, aprenderemos brevemente sobre cada controlador de eventos de libro.

¿Qué es un controlador de eventos de libro de trabajo?

Un controlador de eventos de libro de trabajo es una subrutina que es local a un libro de trabajo. Este código funciona solo en los componentes de un libro de trabajo. Ese es el libro de trabajo en sí, sus hojas y rangos.

¿Dónde escribir el código del controlador de eventos del libro de trabajo?

Los eventos del libro se escriben solo en el objeto del libro. Si escribe un evento de libro de trabajo en algún módulo normal, no habrá ningún error, pero simplemente no funcionarán.

Para escribir en el objeto del libro de trabajo. Haga doble clic en él o haga clic derecho y haga clic en el código de vista. Se mostrará el área de escritura de código.

¿Cómo escribir código para un evento específico en el libro de trabajo?

Ahora, cuando esté en el modo de edición, en el menú desplegable de la esquina superior izquierda, verá general. Haga clic en el menú desplegable y seleccione el libro de trabajo. En el menú desplegable de la esquina superior derecha, se mostrarán todos los eventos. Elija lo que necesite y se le escribirá un código esquelético para ese evento.

Cada evento tiene un nombre de procedimiento fijo. Estos son los nombres de subrutinas reservados que comienzan con workbook_. No puedes usarlos para otras subrutinas.
(puedes, pero serán subrutinas normales).

Importante: Cada subrutina de esa lista se ejecutará en el evento especificado.

Un tipo de procedimiento de evento de libro de trabajo se puede escribir solo una vez en un libro de trabajo. Si escribe dos mismos procedimientos de manejo de eventos en un libro de trabajo, se producirá un error y no se ejecutará ninguno de ellos. Por supuesto, el error serán subrutinas ambiguas.

Aprendamos brevemente sobre cada uno de los eventos.
1. los Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) Evento

Este evento se activa cuando realizamos algún cambio en las hojas de trabajo que contienen (formato excluido). Si desea hacer algo si se realiza algún cambio en cualquier hoja, el código será:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 'hacer algo Msgbox "hecho algo" End Sub 

La "Sh" es siempre la hoja activa. El "objetivo" es la celda activa siempre.

Otro ejemplo: Es posible que desee poner la fecha y la hora en Cel, prl B1 si A1 cambia. En ese caso, usamos el evento workbook_sheetchange. El código se vería así:

 Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) If Target.Address = "$ A $ 1" Entonces Range ("B1"). Value2 = Format (Now (), "hh: mm: ss") End If End Sub 

Esto apuntará solo a la celda A1 en cada hoja, ya que no hemos especificado el objeto "sh".

2. los Workbook_Activate () Evento

Este evento se desencadena cuando se activa el código de evento que contiene el libro de trabajo. El código esquelético para este evento es:

 Private Sub Workbook_Activate () End Sub

Un ejemplo simple es mostrar el nombre del libro de trabajo cuando se selecciona.

 Private Sub Workbook_Activate () MsgBox "Estás en el libro de trabajo" y Activeworkbook.Name End Sub 

Tan pronto como llegue al libro de trabajo que contiene este código, el evento se ejecutará y se mostrará un mensaje que dice "Estás en el nombre del libro de trabajo" (sheet2 es en mi caso).
3. los Workbook_Open () Evento

Esta es una de las preguntas más frecuentes sobre cómo ejecutar una macro tan pronto como se abra el libro. Esta es la respuesta. Este evento de libro de trabajo se ejecuta tan pronto como se abre el libro de trabajo. A diferencia de Workbook_Activate (), este código se ejecuta solo una vez, no cada vez que se activa.

Private Sub Workbook_Open () 'su código' End Sub 

El siguiente evento Workbook_Open de ejemplo simplemente mostrará un mensaje de bienvenida cuando abra el código que contiene el libro de trabajo.

 Private Sub Workbook_Open () MsgBox "Bienvenido al archivo maestro" End Sub

4. los Workbook_Deactivate () Evento

Este evento se activa al dejar el código que contiene el libro de trabajo. En otras palabras, si desea hacer algo, como ocultar hojas o cualquier cosa cuando cambie el libro de trabajo, use este evento de VBA. La sintaxis es:

 Private Sub Workbook_Deactivate () 'su código' End Sub 

El siguiente evento Workbook_Deativate de ejemplo simplemente mostrará un mensaje de que ha dejado la hoja maestra, cuando salga de esta hoja.

 Private Sub Workbook_Deactivate () MsgBox "Dejó la hoja maestra" End Sub 

5. los Workbook_BeforeClose () Evento

Este evento se activa cuando confirma la eliminación de la hoja que contiene el evento de VBA. La sintaxis es simple:

 Private Sub Workbook_BeforeClose (Cancelar como booleano) End Sub 

Cancelar se puede establecer en verdadero si desea mantener abierto el libro.
El siguiente código le preguntará si desea guardar el contenido del libro de trabajo a punto de cerrar.

 Private Sub Workbook_BeforeClose (Cancelar como booleano) ans = MsgBox ("¿Desea guardar el contenido de este libro de trabajo?", VbYesNo) Si ans = True Entonces thisworkbook.save End If End Sub 

6. los Workbook_BeforeSave (ByVal SaveAsUI como booleano, cancelar como booleano) Evento

Este evento se activa antes de que se guarde el libro. La sintaxis es simple:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI como booleano, cancelar como booleano) End Sub 

SaveAsUI se establece en True si hay un cambio en el libro de trabajo (no en VBA).

Cancelar se puede establecer en verdadero si desea mantener el libro sin guardar.

El siguiente código le preguntará si desea guardar el contenido del libro de trabajo a punto de guardar.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("¿Realmente desea guardar el contenido de este libro de trabajo?", VbYesNo) Si ans = False Entonces Cancelar = Verdadero End If End Sub 

7. los Workbook_BeforeSave (ByVal SaveAsUI como booleano, cancelar como booleano) Evento

Este evento se activa antes de que se guarde el libro. La sintaxis es simple:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI como booleano, cancelar como booleano) End Sub 

SaveAsUI se establece en True si hay un cambio en el libro de trabajo (no en VBA).

Cancelar se puede establecer en verdadero si desea mantener el libro sin guardar.

El siguiente código le preguntará si desea guardar el contenido del libro de trabajo a punto de guardar.

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel as Boolean) ans = MsgBox ("¿Realmente desea guardar el contenido de este libro de trabajo?", VbYesNo) Si ans = False Entonces Cancelar = Verdadero End If End Sub 

8. los Workbook_NewSheet (ByVal Sh As Object) Evento

Este evento se activa cuando agrega una nueva hoja al libro. La sintaxis es simple:

 Private Sub Workbook_NewSheet (ByVal Sh As Object) End Sub 

El Sh es el objeto de la hoja. El tipo es en realidad un objeto principal, por lo que si agregamos una hoja de gráfico, una hoja de macros o una hoja de diálogo, el evento aún funciona.

El siguiente código agregará y mostrará el nombre de la hoja que se agregó recientemente.

 Private Sub Workbook_NewSheet (ByVal Sh As Object) MsgBox "Agregaste una nueva hoja". & Sh.Name End Sub 

Hay muchos más eventos del objeto de libro. No podemos discutirlos todos aquí. Si desea saber sobre algún evento específico, pregunte en la sección de comentarios a continuación. Espero haber podido explicar los conceptos básicos de los eventos del libro de trabajo en este artículo. Déjame saber si te ayudó en la sección de comentarios a continuación.
Artículos relacionados:

Uso del evento de cambio de hoja de trabajo para ejecutar una macro cuando se realiza algún cambio | Entonces, para ejecutar su macro cada vez que se actualiza la hoja, usamos los Eventos de la hoja de trabajo de VBA.

Ejecutar macro si se realiza algún cambio en la hoja en el rango especificado | Para ejecutar su código de macro cuando cambia el valor en un rango específico, use este código VBA. Detecta cualquier cambio realizado en el rango especificado y disparará el evento.

El código VBA más simple para resaltar la fila y columna actual usando | Utilice este pequeño fragmento de VBA para resaltar la fila y columna actuales de la hoja.

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.