none
ejecutar macro cuando disminuye el valor de una celda RRS feed

  • Pregunta

  • hola que tal 

    bueno quisiera que me ayuden con lo siguiente 

    en la celda D5 tengo una formula de suma  (suma los valores de A1+A2 +A3)

    entonces quiero que se ejecute una macro cuando disminuya el valor de D5 (porque elimino un valor puedes ser de A1, A2 o A3)

    Pero si D5 es igual a cero no se ejecute ninguna macro

    o si el valor de D5 aumenta tampoco se haga nada

    domingo, 27 de octubre de 2013 15:13

Todas las respuestas

  • Hola fauguitar, que yo sepa un cambio de valor en una celda no puede ejecutar una macro.

    Saludos,

    Xavier

    lunes, 28 de octubre de 2013 11:48
  • Hola Xavier!

    en el evento al cambiar de la hoja se podría lanzar un procedimiento cuando la celda modificada "intersecte" con la deseada, el problema para mi es como saber si el valor ha descendido, no se me ocurre como.


    Saludos a todos desde Huelva <br/> http://www.mvp-access.es/emilio/

    lunes, 28 de octubre de 2013 17:36
  • Gracias por la aclaración, Emilio.

    Saludos,

    Xavier

    lunes, 28 de octubre de 2013 18:09
  • Creo que lo tengo, utilizando una variable estática en que guardaremos el valor de D5, podremos hacerlo.

    Eso si, si la hoja es muy extensa y hay muchos cambios en ella tal vez sea poco eficiente

    Private Sub Worksheet_Change(ByVal Target As Range)
    Static D5Anterior As Variant
    
    ' si el cambio se produce en las celdas A1, A2 o A3
    If Not Intersect(ActiveSheet.Range("A1, A2, A3"), Target) Is Nothing Then
       ' comparo el contenido de la variable (el valor anterior de la celda D5) con el actual
       If D5Anterior > ActiveSheet.Range("D5") And ActiveSheet.Range("D5") > 0 Then
          ' hago lo que tenga que hacer
          MsgBox "Ha disminuido"
       End If
       ' guardo el valor actual de la celda D5
       D5Anterior = ActiveSheet.Range("D5")
    End If
    End Sub


    Saludos a todos desde Huelva <br/> http://www.mvp-access.es/emilio/

    martes, 29 de octubre de 2013 19:15