Podemos tener eventos de libros de trabajo (como abrir, cerrar, etc.) que pueden ser disparadores (interruptores) para el código VBA.
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
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
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.
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.
Este evento ocurre inmediatamente después de guardar el libro de trabajo:
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
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
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
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
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
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
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
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
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