Curso Excel VBA y Macros – Cap. 39 – Eventos de Hoja o Worksheet

<<CURSO COMPLETO EN YOUTUBE>>

En este video tutorial toca tratar uno de los temas que más me gusta al momento de automatizar tareas con macros. Los Eventos nos ayudarán a tener mejores archivos, ya que podremos personalizar procedimientos que se ejecuten cuando suceda algo en el archivo o en los objetos de Excel.

Este es el segundo video tutorial de una serie de videos relacionados con los eventos:

  • Eventos de Libro (Workbook).
  • Eventos de Hoja (Worksheet).
  • Eventos de Formulario (UserForm).
  • Eventos no asociados a objetos.
    • OnTime.
    • OnKey.
  • Eventos de Aplicación (Application).

Ver video Capítulo 39 Excel VBA & Macros

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Qué son los eventos en VBA

Recordemos el modelo de objetos en Excel: Application > Workbook > Worksheet > Cell. Un evento es algo que le sucede a un objeto o cuando sucede una acción en nuestro archivo, por ejemplo:

  • Al dar doble clic en una celda.
  • Al cambiar el valor de celdas.
  • Al abrir un archivo, al cerrar un archivo.
  • Al dar clic en un botón.
  • Al iniciar un formulario.

El muy importante conocer los eventos en Excel para escribir macros funcionales. Hay que considerar que los eventos no pueden ser generados por la grabadora de macros, aunque el código VBA generado por la grabadora sí que podemos usarlo en los eventos.

Es posible desactivar los eventos en nuestros archivos usando:

Application.EnableEvents = False

Eventos más comunes de Hoja (Worksheet)

Los eventos de Hoja se aplica a una hoja en particular. El código VBA de estos eventos se aloja en el mismo objeto de la hoja, solo hay que dar clic derecho sobre la etiqueta de una hoja y elegimos Ver código. La siguiente es una lista de los eventos más comunes que podremos aplicar cuando suceda una acción a nivel Hoja.

EVENTOS

DESCRIPCIÓN

Worksheet_Activate

La hoja es activada.

Worksheet_BeforeDelete

Antes de eliminar a hoja.

Worksheet_BeforeDoubleClick

Antes de dar doble clic en una celda.

Worksheet_BeforeRightClick

Antes de dar clic derecho sobre una celda.

Worksheet_Calculate

La hoja es calculada o recalculada.

Worksheet_Change

Cuando el valor de una celda es cambiado.

Worksheet_Deactivate

La hoja es desactivada (se elige activa otra hoja).

Worksheet_FollowHyperlink

Cuando un hipervínculo es seleccionado.

Worksheet_PivotTableUpdate

Cuando una Tabla dinámica es cambiada o actualizada

Worksheet_SelectionChange

Cuando se selecciona cualquier celda o rango.

Evento Worksheet_Activate

Este evento se lanza al activar una hoja. La siguiente macro actualizará todas las Tablas dinámicas que se encuentren en una hoja.

Private Sub Worksheet_Activate()

Dim TD As PivotTable

For Each TD In ActiveSheet.PivotTables

    TD.RefreshTable

Next TD

End Sub

Evento Worksheet_BeforeDelete

Este evento se ejecuta al momento de eliminar una hoja. El siguiente código VBA evitará que una hoja sea eliminada. Recordemos que no podemos deshacer la acción de eliminar hojas. La macro realiza una copia antes de eliminar la hoja y así nos aseguramos de tener nuestra información a salvo.

Private Sub Worksheet_BeforeDelete()

Dim MiNombre As String

MiNombre = ThisWorkbook.ActiveSheet.Name

ThisWorkbook.ActiveSheet.Name = VBA.Left(MiNombre, 30) & "#"

ThisWorkbook.ActiveSheet.Copy _
After:=Sheets(ThisWorkbook.ActiveSheet.Index)

ThisWorkbook.ActiveSheet.Name = MiNombre

End Sub

Evento Worksheet_SelectionChange

Este evento se lanza al momento de seleccionar una o celda o rango de una hoja en particular. La siguiente macro nos ayudará a ordenar un rango en base a una celda que corresponda a un encabezado. Por ejemplo, si seleccionamos la celda A1, el rango se ordenará por la columna A en orde ascendente, de menor a mayor.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim MiRango As Range

If Target.Column <= 6 And Target.Row = 1 Then

    Set MiRango = ActiveSheet.Range("A1").CurrentRegion
    
    MiRango.Sort Key1:=Cells(1, Target.Column), Order1:=xlAscending, Header:=xlYes

End If

End Sub

Descarga el archivo de ejemplo

039 – Automatizando macros con Eventos de Hoja o Worksheet.zip

<<CURSO COMPLETO EN YOUTUBE>>

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

También te podría gustar...