EXCEL VBA funciona com F5 - mas não será executado automaticamente quando os valores das células forem alterados

EXCEL VBA funciona com F5 - mas não será executado automaticamente quando os valores das células forem alterados

A fórmula VBA funciona perfeitamente com F5

As células E3:E5 da coluna E têm funções que calculam um valor em dólaresouUS$ 0,00.

Esta é a fórmula extraída de =SUM('MEDENT Proposal - Creator'!B15*15)

Se o resultado for $ 0,00 a linha seráesconder- se for maior que 0 éexibir

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

Meu problema:Eu não consigo fazer issoexecutar automaticamentequando os valores das células são alterados.
Houve algumas sugestões, mas nenhuma funcionou.

Responder1

Você deve adicionar uma chamada ao seu sub no Worksheet_Calculateevento da planilha que deseja atualizar.

Private Sub Worksheet_Calculate()

    Call hidelines2

End Sub

É importante que você tenha colocado no lugar certo, veja a animação abaixo.

insira a descrição da imagem aqui

Responder2

Se você não precisar disso em grande escala, 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

Não é como se você visse E3, E4 ou E5, a menos que altere sua seleção em algum lugar da planilha. Porém, isso não é bom para grande escala.

Este foi o melhorsolução que pude encontrar.

informação relacionada