Pregunta EXCEL VBA funciona con F5, pero no se ejecutará automáticamente cuando se cambien los valores de celda


La fórmula VBA funciona perfectamente con F5

Las celdas de columna E3: E5 tienen funciones que calculan un monto en dólares o $ 0.00.

Esta es la fórmula que tira de =SUM('MEDENT Proposal - Creator'!B15*15) 

Si el resultado es $ 0.00, la línea es esconder - si es mayor que 0 es mostrar 

Sub hidelines2()  
      If Range("E3").Value = 0 Then  
         Rows("3:3").EntireRow.Hidden = True  
  ElseIf Range("E3").Value > 0 Then  
         Rows("3:3").EntireRow.Hidden = False  
  End If  
      If Range("E4").Value = 0 Then  
         Rows("4:4").EntireRow.Hidden = True  
  ElseIf Range("E4").Value > 0 Then  
         Rows("4:4").EntireRow.Hidden = False  
  End If  
      If Range("E5").Value = 0 Then  
         Rows("5:5").EntireRow.Hidden = True  
  ElseIf Range("E5").Value > 0 Then  
         Rows("5:5").EntireRow.Hidden = False  
  End If  
End Sub

Mi problema: No puedo hacer esto ejecutar automáticamente cuando se cambian los valores de las celdas
Hubo algunas sugerencias, pero ninguna ha funcionado.


0


origen




Respuestas:


Debe agregar una llamada a su sub en el Worksheet_Calculate evento de la hoja que desea actualizar.

Private Sub Worksheet_Calculate()

    Call hidelines2

End Sub

Es importante que lo hayas colocado en el lugar correcto, mira la animación a continuación.

enter image description here


0



Gracias por el esfuerzo excepcional. No quiero molestarlo más con esto, su tiempo es valioso. (Trataré de encontrar una solución alternativa) Ahora obtengo  el método 'oculto' del objeto 'rango' falló  entonces  Error de automatización Se produjo una excepción  La ventana EXCEL es luego asesinada - Ed Regis
@EdRegis, lo siento, ¿esto no funciona para ti o no es esto lo que querías? - Jonno
Seguí las instrucciones exactamente, pero condujo a los errores anteriores. - Ed Regis
@EdRegis es extraño, no edité tu código, simplemente lo agregué al evento de cálculo. ¿Qué versión de Excel? - Jonno
2016 - Puedo enviarte toda la hoja de cálculo si estás interesado - Ed Regis


Si no necesita esto a gran escala, esto funcionará -

Private Sub worksheet_selectionchange(ByVal Target As Range)
    If Range("E3") = 0 Then
        Range("E3").EntireRow.Hidden = True
        Else: Range("e4").EntireRow.Hidden = False
    End If
    If Range("E4") = 0 Then
        Range("E4").EntireRow.Hidden = True
        Else: Range("e4").EntireRow.Hidden = False
    End If
     If Range("E5") = 0 Then
        Range("E5").EntireRow.Hidden = True
        Else: Range("e5").EntireRow.Hidden = False
    End If
End Sub

No es como si vieras E3, E4 o E5 a menos que cambies tu selección en algún lugar de la hoja. Esto no es bueno para gran escala, en absoluto.

Este fue el mejor solución que podría encontrar.


0