Detectar cambio de celda, sin pulsar enter y ejecutar macro

Tengo una fórmula condicional =SI(AL10="No";"------------";"") la cual funciona mediante una validación de datos "SI y No" Y quisiera que cuando el elija entre SI y NO la hoja detecte los cambios son 40 celdas con validación de datos ubicadas en "AN10:AR1057", Eh encontrado varias marcos que funcionan siempre y cuando el cambio se haya hecho pulsando enter, pero no así si en el rango hay cambios mediante la validación de datos.

Ejemplo esta :

Private Sub Worksheet_Change(ByVal Target As Range)
Rango = "AN10:AR1057"
If Not Application.Intersect(Target, Range(Rango)) Is Nothing Then
MsgBox ("Ha cambiado el valor de la celda")
End If
End Sub

1 respuesta

Respuesta
1

H o l a:

La macro que pusiste funciona si modificas la celda ya sea capturando directamente en la celda y presionando enter o seleccionando un dato de la lista de validación.

La macro la tienes que poner en los eventos de la hoja:

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Si todo eso es correcto, entonces no me queda claro que tienes, por ejemplo, en la celda AN10, ¿tienes una fórmula o tienes una lista de validación de datos?

Si quieres, puedo revisar tu archivo, envíame tu archivo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Daniel Herrera Flores” y el título de esta pregunta.

H o l a:

Te anexo la macro actualizada.

Lo que tienes que verificar es si cambió el valor de la celda AL10, por eso te pregunté:

"

En la celda AN10, ¿tienes una fórmula o tienes una lista de validación de datos?

"

En la celda AN10 tienes una fórmula, esa fórmula no está cambiando, lo que estás cambiando es el dato de la celda AL10; entonces, lo que tienes que verificar es el cambio en la celda AL10.

Private Sub Worksheet_Change(ByVal Target As Range)
'Act.Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("AL10:AL1057")) Is Nothing Then
        MsgBox ("Ha cambiado el valor de la celda")
    End If
End Sub

La macro la tienes que poner en la hoja "Boletines Bimestrales", y la tenías en otro objeto: "hoja3".


Si no quieres evaluar la celda AL10, entonces, el evento que tiene que utilizar es el evento Calculate, pero no te lo recomiendo, ya que este evento se ejecuta cada vez que modificas cualquier celda; al modificar cualquier celda, se recalcula la hoja y entonces se activa el evento Calculate:

Private Sub Worksheet_Calculate()
    MsgBox ("Ha cambiado el valor de la celda")
End Sub


':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas