¿Como hacer que el mensaje aparezca sólo cuando una celda es modificada?

La verdad me estoy iniciando en las macros e intento crearlas, cuando no encuentro la solución a mi problema recurro a ustedes, expertos.

Tengo el siguiente código:

Private Sub Worksheet_SelectionChange(ByVal target As Range)
If Range("m2") <> "NO" Then
resultado = MsgBox("Desea modificar los datos ingresados", vbOKCancel, "Advertencia")
Select Case resultado
Case vbCancel:
Range("d4").ClearContents
End Select
End If
End Sub

Todo funciona perfectamente, excepto porque quisiera que sólo en el momento que modifico la celda "d4" me muestre el mensaje y luego pueda continuar trabajando en la hoja sin que siga apareciendo el mensaje.

1 respuesta

Respuesta
2

Cambia tu macro por esta:

Private Sub Worksheet_Change(ByVal target As Range)
'Act.Por.Dante Amor
    If Not Intersect(target, Range("D4")) Is Nothing Then
        If Range("m2") <> "NO" Then
            resultado = MsgBox("Desea modificar los datos ingresados", vbOKCancel, "Advertencia")
            Select Case resultado
                Case vbCancel
                    Application.EnableEvents = False
                    Range("d4").ClearContents
                    Application.EnableEvents = True
            End Select
        End If
    End If
End Sub

En la hoja tienes varios eventos, entre ellos el selectionChange y el Change.

El que te estoy enviando es solamente cuando modifican una celda.

Con esta instrucción se delimita cuál celda es la que se va a verificar:

If Not Intersect(target, Range("D4")) Is Nothing Then


Además agregué estas instrucciones:

Application.EnableEvents = False

Es para desactivar los eventos de la hoja, ya que en la siguiente instrucción, estás modificando nuevamente la celda D4, lo que significa que el evento se vuelve a activar, por eso es necesaria desactivarlos, para que no caiga en un ciclo interminable.

Con esta instrucción se vuelve a activar:

Application.EnableEvents = True


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas