Es posible que desee ejecutar su fragmento de macro / VBA cuando una celda cambia su valor, cuando ocurre un doble clic, cuando se selecciona una hoja, etc. En todos estos casos usamos el Controlador de eventos de la hoja 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 de la hoja de trabajo.

¿Qué es un controlador de eventos de hojas de trabajo? Un controlador de eventos de hoja de trabajo es una subrutina que es local a un módulo de hoja de trabajo.

¿Dónde escribir el código del controlador de eventos de la hoja de trabajo?

image

Los eventos de la hoja de trabajo se escriben solo en objetos de hojas. Si escribe un evento de hoja de trabajo en algún módulo o módulo de clase, no habrá ningún error, pero simplemente no funcionarán.

Escribir en el objeto de hoja. Haga doble clic en él o haga clic con el botón derecho y haga clic en ver código. Se mostrará el área de escritura de código.

¿Cómo escribir código para un evento específico en la hoja 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 la hoja de trabajo.

Ahora, 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.

image

Cada evento tiene un nombre de procedimiento fijo. Estos son los nombres de subrutinas reservados. No puede usarlos para otras subrutinas en una hoja. En un módulo, funcionarán como una subrutina normal.

Importante: Cada subrutina de esa lista se ejecutará en el evento especificado.

Un tipo de procedimiento de evento de hoja de trabajo se puede escribir solo una vez en una hoja. Si escribe dos mismos procedimientos de manejo de eventos en una hoja, se producirá un error y ninguno de ellos se ejecutará. Por supuesto, el error serán subrutinas ambiguas.

Aprendamos brevemente sobre cada uno de los eventos.

1. Evento TheWorksheet_Change (ByVal Target As Range) Este evento se activa cuando hacemos algún cambio en las hojas de trabajo que contienen (formato excluido). Si desea hacer algo si se realiza algún cambio en toda la hoja, el código será:

Private Sub Worksheet_Change(ByVal Target As Range)

'do somehting

Msgbox "done something"

End Sub

El «objetivo» es la celda activa siempre.

Otro ejemplo: es posible que desee poner la fecha y la hora en la celda B1 si A1 cambia. En ese caso, usamos el evento worksheet_change. El código se vería así:

Private Sub Worksheet_Change(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.

Si desea apuntar a un rango, utilice el siguiente ejemplo:

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]

2. TheWorksheet_SelectionChange (ByVal Target As Range) * Evento Como sugiere el nombre, este evento se activa cuando cambia la selección. En otras palabras, si el cursor está en la celda A1 y se mueve a otra celda, se ejecutará el código de esta subrutina.

El siguiente código cambiará el color de las celdas activas siempre que cambie y si es una fila uniforme.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row Mod 2 = 0 Then

Target.Interior.ColorIndex = 22

End If

End Sub

Ahora, siempre que mi cursor se mueva en una fila par, se coloreará. Las celdas de filas impares se salvarán.

image

Otro ejemplo del evento Worksheet_SelectionChange:

link: / events-in-vba-simple-vba-code-to-highlight-current-row-and-column-using [El código VBA más simple para resaltar la fila y columna actual usando]

3. El evento Worksheet_Activate () Este evento se activa cuando se activa el código de evento que contiene la hoja.

El código esquelético para este evento es:

Private Sub Worksheet_Activate()

End Sub

Un ejemplo simple es mostrar el nombre de la hoja cuando se selecciona.

Private Sub Worksheet_Activate()

MsgBox "You are on " & ActiveSheet.Name

End Sub

Tan pronto como llegue a la hoja que contiene este código, el evento se ejecutará y se mostrará un mensaje que dice «Estás en el nombre de la hoja»

(sheet2 es en mi caso).

4. El evento Worksheet_Deactivate () Este evento se dispara al salir del código que contiene la hoja. En otras palabras, si desea hacer algo, como ocultar filas o cualquier otra cosa cuando deje la hoja, use este evento de VBA. La sintaxis es:

Private Sub Worksheet_Deactivate()

'your code

'

End Sub

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

Private Sub Worksheet_Deactivate()

MsgBox "You Left The Master Sheet"

End Sub

image

===

5. El evento Worksheet_BeforeDelete () * Este evento se activa cuando confirma la eliminación de la hoja que contiene el evento VBA. La sintaxis es simple:

Private Sub Worksheet_BeforeDelete()

End Sub

El siguiente código le preguntará si desea copiar el contenido de la hoja a punto de eliminar.

Private Sub Worksheet_BeforeDelete()

ans = MsgBox("Do you want to copy the content of this sheet to a new sheet?", vbYesNo)

If ans = True Then

'code to copy

End If

End Sub

6. TheWorksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) * Evento Este evento se activa cuando hace doble clic en la celda de destino. La sintaxis de este evento de hoja de trabajo de VBA es:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Si no configura la celda o el rango de destino, se disparará con cada doble clic en la hoja.

La variable Cancelar es una variable booleana. Si lo configura como Verdadero, la acción predeterminada no sucederá. Significa que si hace doble clic en la celda, no entrará en modo de edición.

El siguiente código hará que la celda se llene de color si hace doble clic en cualquier celda.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Interior.ColorIndex = 7

End Sub

El siguiente código apunta a la celda A1. Si ya está relleno con el color especificado, desaparecerá el color. Es muy parecido a un botón Me gusta o una casilla de verificación.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Address = "$A$1" Then



Cancel = True

If Target.Interior.ColorIndex = 4 Then

Target.Interior.ColorIndex = xlColorIndexNone

Else

Target.Interior.ColorIndex = 4

End If



End If



End Sub

image

7. TheWorksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) * Evento Este evento se activa cuando hace clic con el botón derecho en la celda de destino. La sintaxis de este evento de hoja de trabajo de VBA es:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

'

'your code

'

End Sub

El siguiente código llenará la celda con el valor 1 si hace clic derecho sobre él.

No mostrará las opciones predeterminadas de clic derecho ya que hemos configurado el operador «Cancelar» en Verdadero.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Value = 1

End Sub

8. TheWorksheet_Calculate () * Evento Si quieres que suceda algo cuando un Excel calcula una hoja, usa este evento. Se activará cada vez que Excel calcule una hoja. La sintaxis es simple:

Private Sub Worksheet_Calculate()

'

'your code

'

End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

'

'your code

'

End Sub

Puede configurar el hipervínculo de destino si lo desea. Si no configura el hipervínculo de destino, se ejecutará si hace clic en cualquier hipervínculo en la hoja que contiene el código.

Así que sí, chicos, estos fueron algunos eventos básicos de la hoja de trabajo que serán útiles si los conocen. A continuación se muestran algunos artículos relacionados que puede que le guste leer.

Si tiene alguna duda con respecto a este artículo o cualquier otro artículo relacionado con Excel / VBA, háganoslo saber 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-highlight-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.