Excel - Iniciar macro al cambio de una celda

 
Vista:
sin imagen de perfil
Val: 12
Ha disminuido su posición en 128 puestos en Excel (en relación al último mes)
Gráfica de Excel

Iniciar macro al cambio de una celda

Publicado por Roberto (17 intervenciones) el 28/10/2016 09:02:33
Hola muy buenas a todos.

Tengo un excel en el que quiero lanzar un mensaje de alerta cuando el valor de una cierta celda cambia. El valor de dicha celda cambia automáticamente porque existe un reloj en la Hoja que cuenta el tiempo acumulado de parada. El caso es que tengo la celda R6 que cambia a "RENDIMIENTO BAJO" si el tiempo es > a 16min.

Cuando se detecta el cambio es cuando quiero que se inicie la macro del mensajito, puesto que si la inicio al abrir el libro, si el tiempo de parada es >16min, el mensaje aparece cada segundo que pasa.

Macro del reloj

1
2
3
4
5
6
Sub Tiempo()
 
Workbooks("KITS_ENVASADOS_PALETIZADOmacro").Sheets("Hoja1").Range("Q4").Formula = "=NOW()"
Application.OnTime Now + TimeValue("00:00:02"), "Tiempo"
 
End Sub


Este es el código que uso para detectar el cambio y con ello, iniciar la macro del mensaje

1
2
3
4
5
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$R$6" Then
Call mensaje
End If
End Sub



1
2
3
4
5
6
7
8
9
Sub mensaje()
 
 
If Range("R6") = "RENDIMIENTO BAJO" Then
MsgBox "Posible bajada rendimiento", vbExclamation, "Control paradas"
 
End If
 
End Sub


El caso es que solo detecta cambios que hago yo manualmente en la celda. No cambios debidos a la fórmula que hay dentro de la celda R6. Sabéis de alguna forma mágica que solucione este problema?


Muchísimas gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 83
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Iniciar macro al cambio de una celda

Publicado por GMG (119 intervenciones) el 28/10/2016 12:48:57
Puedes hacerlo de la siguiente forma:

1
2
3
4
5
Private Sub Worksheet_Calculate()
If Range("R6") = "RENDIMIENTO BAJO" Then
MsgBox "Posible bajada rendimiento", vbExclamation, "Control paradas"
End If
End Sub

De esta forma te ahorras un paso, pero puedes substituirlo por:

1
2
3
4
5
Private Sub Worksheet_Calculate()
If Range("R6") = "RENDIMIENTO BAJO" Then
mensaje 'o Call mensaje
End If
End Sub

Si prefieres tener separado la parte del mensaje del disparador.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar