Evento CAMBIAR de una hoja excel

He creado un evento "cambiar"

Private Sub Worksheet_Change(ByVal Target As Range)
'MEJORAS MACROS
Application.ScreenUpdating = False

Static anteriorvalor As Variant

If Range("Planning_economic_study").Value <> anteriorvalor Then
anteriorvalor = Range("Planning_economic_study").Value
Call Planning_study
Application.Goto Reference:="Warranties_Duration"
End If
Application.ScreenUpdating = True
End Sub

El problema es que si cambio otras celdas que Range("Planning_economic_study") tambien se me lanza la macro...

Hay que resaltar que el campo "Planning_economic_study" es un calculo que depende de otra celda "date_proyect" pero la macro se lanza tocando otras celdas...

1 Respuesta

Respuesta
1

Para que solamente se ejecute cuando modificas la celda de Range("Planning_economic_study")

Private Sub Worksheet_Change(ByVal Target As Range)
'MEJORAS MACROS
    If Not Intersect(Target, Range("Planning_economic_study")) Is Nothing Then
        Application.ScreenUpdating = False
        Static anteriorvalor As Variant
        If Range("Planning_economic_study").Value <> anteriorvalor Then
            anteriorvalor = Range("Planning_economic_study").Value
            Call Planning_study
            Application.Goto Reference:="Warranties_Duration"
        End If
        Application.ScreenUpdating = True
    End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola, 

gracias por tu repuesta.

Lo acabo de probar y ya no lanza la macro para cualquier cambio de la hoja, pero ahora tampoco lanza la macro si el valor (calculado) de la celda "Planning_economic_study" cambia
el valor "Planning_economic_study" se calcula informando 2 celdas: 

"Project_Duration" y "Warranties_Duration"

no sé como corrigirlo...

que puedo hacer? 

gracias y un saludo

sigo intentándolo pero no lo entiendo...

help please

El evento change se activa cuando modificas la celda, si la celda es el resultado de luna fórmula, entonces no estás cambiando la celda, es decir, la fórmula sigue siendo la misma, lo que cambió fue el resultado que entrega la fórmula y eso no activa el evento change.

Las celdas "Project_Duration" y "Warranties_Duration", ¿Contienen fórmulas o en esas celdas capturas valores?

Tienes que encontrar cuál o cuáles celdas son las que realmente modificas, entonces las pones en el evento Change. Por ejemplo, si las celdas "Project_Duration" y "Warranties_Duration" son las que modificas entonces el evento quedaría así:

Private Sub Worksheet_Change(ByVal Target As Range)
'MEJORAS MACROS
    If Not Intersect(Target, Range("Project_Duration", "Warranties_Duration")) Is Nothing Then
        Application.ScreenUpdating = False
        Static anteriorvalor As Variant
        If Range("Planning_economic_study").Value <> anteriorvalor Then
            anteriorvalor = Range("Planning_economic_study").Value
            Call Planning_study
            Application.Goto Reference:="Warranties_Duration"
        End If
        Application.ScreenUpdating = True
    End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas