TOP

VBA-Lección 11.1. Eventos del libro de trabajo (Workbook Events)

Podemos tener eventos de libros de trabajo (como abrir, cerrar, etc.) que pueden ser disparadores (interruptores) para el código VBA.


Workbook_Open (Abriendo el libro)

Para seguir las instrucciones cuando se abra el libro de trabajo, vaya a ThisWorkbook y seleccione Workbook:

El evento Workbook_Open se agregará de forma predeterminada y actuará cuando se abra el libro de trabajo:

Private Sub Workbook_Open()

End Sub

Por ejemplo, si agregamos la siguiente instrucción, se mostrará el cuadro de diálogo cuando se abra el libro:

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (Evento antes de cerrar el libro)

Para ejecutar las instrucciones antes de cerrar el libro, seleccione BeforeClose:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

El cierre del libro de trabajo se puede cancelar configurando la variable "Cancel" en True.

A continuación se muestra un ejemplo en el que se solicita confirmación al usuario para cerrar el libro de trabajo:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Si el usuario responde NO, entonces la variable Cancel tendrá el valor TRUE (que cancelará el cierre del libro)
     If MsgBox("¿De verdad quieres cerrar este libro?", 36, "Confirmo") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (Evento antes de guardar el libro)

Este evento ocurre inmediatamente antes de que se guarde el libro:

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

End Sub

Se puede cancelar el guardado de un archivo configurando la variable "Cancel" en True.

Workbook_BeforePrint (Evento antes de imprimir el libro)

Este evento ocurre antes de que se imprima el libro:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

La impresión del archivo se puede cancelar configurando la variable "Cancel" en True.

Workbook_AfterSave (Evento después de guardar el libro)

Este evento ocurre inmediatamente después de guardar el libro de trabajo:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (evento de cambio de hoja de trabajo)

Este evento ocurre cada vez que cambia entre hojas de trabajo en un libro de trabajo:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

End Sub

En este ejemplo, el nombre de la hoja activa se muestra en el cuadro de diálogo:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     MsgBox "Name of Sheet : " & Sh.Name
End Sub

Workbook_SheetBeforeDoubleClick (evento de doble clic en una celda)

Este evento ocurre cuando se hace doble clic en una celda de la hoja de cálculo:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Por ejemplo, podemos usar este evento para agregar un color de relleno de celda, dependiendo de la hoja seleccionada:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     If Sh.Name = "Sheet1" Then
         Target.Interior.Color = RGB(255, 108, 0) 'color naranja
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'Color verde
     End If
End Sub

Workbook_SheetBeforeRightClick (Evento antes del clic derecho)

Este evento ocurre antes de que el botón derecho del mouse haga clic en sí mismo:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (evento de cambio de contenido de hoja)

Este evento ocurre cada vez que cambia el contenido de la hoja de cálculo:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate (evento SheetCalculate)

Este evento ocurre cada vez que se calculan o recalculan datos en una hoja de cálculo:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (evento de cambio de rango de celdas seleccionado)

Este evento ocurre cada vez que cambia el contenido del rango de celdas seleccionado en la hoja de cálculo:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

En este ejemplo, el color de relleno cambia si la celda A1 está vacía:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     If Range("A1") = "" Then
         Target.Interior.Color = RGB(124, 255, 255) 'Color azul
    End If
End Sub

Workbook_NewSheet (Agregar evento de nueva hoja)

Este evento ocurre cada vez que se agrega una nueva hoja al libro de trabajo:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (evento de clic en enlace)

Este evento ocurre cuando se hace clic en un enlace (hipertexto):

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub