Ejercicios: Evento WorkSheet_BeforeDoubleClick de VBA

El evento VBA Worksheet_BeforeDoubleClick se activa antes de que se ejecute la acción doble clic programado en una hoja de cálculo de Excel. Esto significa que cuando hace doble clic en una celda, el código asociado con ese evento se ejecuta primero y luego Excel realiza la acción normal de doble clic (puede editar la celda, abrir un gráfico, etc.).

¿Para qué se utiliza?

El evento Worksheet_BeforeDoubleClick se usa normalmente para personalizar acciones de doble clic en celdas. Por ejemplo, puedes usarlo para:

  • Ejecute una macro o procedimiento personalizado en lugar de la acción estándar de doble clic.
  • Mostrar un formulario de usuario para recopilar información de otros usuarios.
  • Realizar cálculos o validaciones basados ​​en hacer doble clic en una celda.
  • Evita que la acción estándar de doble clic funcione en celdas o rangos de celdas específicos.

¿Cómo se utiliza?

Para utilizar el evento Worksheet_BeforeDoubleClick, primero debe crear un procedimiento en el editor VBA. Luego agregue este procedimiento a la hoja de trabajo donde desea activar el evento. Esto se puede hacer colocando el siguiente código en el módulo de hoja de cálculo:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)

' Tu código aquí

End Sub

El código del procedimiento Worksheet_BeforeDoubleClick se ejecuta cada vez que se hace doble clic en una celda de la hoja de cálculo. El parámetro Target de este procedimiento representa la celda en la que se hizo doble clic. Puede utilizar este parámetro para acceder a las propiedades y métodos de la celda seleccionada.

Ejemplo

El siguiente código muestra cómo utilizar el evento Worksheet_BeforeDoubleClick para mostrar un mensaje de advertencia cuando se hace doble clic en una celda que contiene el texto «No tocar».

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range)

' Comprobar si la celda contiene el texto "No tocar"
If Target.Value = "No tocar" Then

    ' Mostrar un mensaje de alerta
    MsgBox "No se permite hacer doble clic en esta celda."

    ' Cancelar la acción de doble clic predeterminada
    Cancel = True

End If

End Sub

En este ejemplo, al hacer doble clic en una celda que contiene el texto «No tocar», se mostrará un mensaje de advertencia y se cancelará la acción predeterminada de doble clic.

Conoce más eventos

Related Articles

Responses

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  1. Cuando ejecuto el código: «Msgbox ActiveCell.Row» Me funciona perfectamente, pero cuando cambio msgbox por Fila=ActiveCell.Row, entonces no funciona y me da error indicándome que no he definido la variable fila. No entiendo por que.
    el código completo que tengo es este:
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Fila = ActiveCell.Row
    UserForm1.Show
    End Sub

  2. Buenas tardes Sr. Vela, estoy siguiendo su curso de VBA para macros en excel, y en el Módulo 14, evento WorkSheet_BeforeDoubleClick, no me funciona el código, posiblemente he entendido algo mal y estoy atascado. no se si me puede ayudar. mi código es :
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As range, Cancel As Boolean)
    UserForm1.Show
    End Sub
    El código del userform es:
    Private Sub UserForm_Activate()
    Fila = ActiveCell.Row
    Me.TextBox1 = range(«C» & Fila)
    Me.TextBox2 = range(«D» & Fila)
    Me.TextBox3 = range(«E» & Fila)
    End Sub
    Con este código me lanza error de compilación indicando que la variable no esta definida. si añado esta línea al código: Dim Fila As long entonces si que me funciona, pero en modificar, el código que tengo es:
    Private Sub CommandButton1_Click()

    Fila = ActiveCell.Row
    range(«C» & Fila) = Me.TextBox1
    range(«D» & Fila) = Me.TextBox2
    range(«E» & Fila) = Me.TextBox3
    End Sub
    Y no me funciona, me indica que la variable no esta definida, y si defino la variable como en el userForm entonces me indica que no es posible fuera del type. Ando un poco perdido, por favor podría ayudarme. Me encantaría poder Terminar el curso. Muchas Gracias de antemano.