VBA - Eventos

VBA, una programación impulsada por eventos se puede activar cuando cambia una celda o un rango de valores de celda manualmente. El evento de cambio puede facilitar las cosas, pero puede terminar rápidamente una página llena de formato. Hay dos tipos de eventos.

  • Eventos de la hoja de trabajo
  • Eventos del libro de trabajo

Eventos de la hoja de trabajo

Los eventos de la hoja de trabajo se activan cuando hay un cambio en la hoja de trabajo. Se crea haciendo clic con el botón derecho en la pestaña de la hoja y seleccionando 'ver código', y luego pegando el código.

El usuario puede seleccionar cada una de esas hojas de trabajo y elegir "Hoja de trabajo" en el menú desplegable para obtener la lista de todos los eventos de la hoja de trabajo compatibles.

A continuación se muestran los eventos de hoja de trabajo admitidos que el usuario puede agregar.

Private Sub Worksheet_Activate() 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 
Private Sub Worksheet_Calculate() 
Private Sub Worksheet_Change(ByVal Target As Range) 
Private Sub Worksheet_Deactivate() 
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Ejemplo

Digamos que solo necesitamos mostrar un mensaje antes de hacer doble clic.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   MsgBox "Before Double Click"
End Sub

Salida

Al hacer doble clic en cualquier celda, el cuadro de mensaje se muestra al usuario como se muestra en la siguiente captura de pantalla.

Eventos del libro de trabajo

Los eventos del libro de trabajo se activan cuando hay un cambio en el libro de trabajo en general. Podemos agregar el código para los eventos del libro de trabajo seleccionando 'ThisWorkbook' y seleccionando 'libro de trabajo' en el menú desplegable como se muestra en la siguiente captura de pantalla. Inmediatamente se muestra al usuario el subprocedimiento Workbook_open como se ve en la siguiente captura de pantalla.

A continuación, se muestran los eventos de libro de trabajo admitidos que el usuario puede agregar.

Private Sub Workbook_AddinUninstall() 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Private Sub Workbook_Deactivate() 
Private Sub Workbook_NewSheet(ByVal Sh As Object) 
Private Sub Workbook_Open() 
Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Private Sub Workbook_WindowActivate(ByVal Wn As Window) 
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) 
Private Sub Workbook_WindowResize(ByVal Wn As Window)

Ejemplo

Digamos que solo necesitamos mostrar un mensaje al usuario de que una nueva hoja se crea correctamente, cada vez que se crea una nueva hoja.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
   MsgBox "New Sheet Created Successfully"
End Sub

Salida

Al crear una nueva hoja de Excel, se muestra un mensaje al usuario como se muestra en la siguiente captura de pantalla.