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 del 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 solo funciona en los componentes de un libro. 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 puede usarlos para otras subrutinas (puede, 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. Evento Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) 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)

'do something

Msgbox "done something"

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" Then

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

  1. Evento Workbook_Activate () Este evento se activa 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 "You are on workbook " & 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).

  1. El evento Workbook_Open () Esta es una de las preguntas más frecuentes sobre cómo ejecutar una macro tan pronto como se abre 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()

'your code

'

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 "Welcome to the Master File"

End Sub
  1. El evento Workbook_Deactivate () Este evento se activa cuando se deja 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()

'your code

'

End Sub

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

Private Sub Workbook_Deactivate()

MsgBox "You Left The Master Sheet"

End Sub
  1. El evento Workbook_BeforeClose () Este evento se activa cuando confirma la eliminación de la hoja que contiene el evento VBA. La sintaxis es simple:

Private Sub Workbook_BeforeClose(Cancel as Boolean)

End Sub

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

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

Private Sub Workbook_BeforeClose(Cancel as Boolean)

ans = MsgBox("Do you want to save the content of this workbook?", vbYesNo)

If ans = True Then

thisworkbook.save

End If

End Sub
  1. El evento Workbook_BeforeSave (ByVal SaveAsUI como booleano, Cancelar como booleano) Este evento se activa antes de que se guarde el libro. La sintaxis es simple:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

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("Do you really want to save the content of this workbook?", vbYesNo)

If ans = False Then

Cancel = True

End If

End Sub
  1. El evento Workbook_BeforeSave (ByVal SaveAsUI como booleano, Cancelar como booleano) Este evento se activa antes de que se guarde el libro. La sintaxis es simple:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

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("Do you really want to save the content of this workbook?", vbYesNo)

If ans = False Then

Cancel = True

End If

End Sub
  1. El evento Workbook_NewSheet (ByVal Sh As Object) 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 "You added a new sheet. " & 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:

link: / tips-using-worksheet-change-event-to-run-macro-when-any-change-is-made [Uso de evento de cambio de hoja de trabajo para ejecutar macro cuando se realiza cualquier cambio] | Entonces, para ejecutar su macro cada vez que se actualiza la hoja, usamos los Eventos de la hoja de trabajo de VBA.

link: / events-in-vba-run-macro-if-any-change-made-on-sheet-range [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.

link: / events-in-vba-simple-vba-code-to-resaltar-current-row-and-column-using [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.

Artículos populares:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-incrementa-your-productividad [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.

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.