EXCEL VBA działa z F5 - ale nie uruchomi się automatycznie po zmianie wartości komórek


0

Formuła VBA działa doskonale z F5

Kolumny E E3: E5 mają funkcje, które obliczają do kwoty w dolarach lub 0,00 USD.

Oto formuła, z której czerpiemy =SUM('MEDENT Proposal - Creator'!B15*15)

Jeśli wynik wynosi 0,00 USD, linia jest ukryć - jeśli jest większy niż 0, to jest odkryć

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

Mój problem: Nie mogę tego zrobić automatycznie uruchamiany gdy wartości komórki zostaną zmienione.
Było kilka sugestii, ale żadna nie zadziałała.

Odpowiedzi:


0

Powinieneś dodać połączenie do swojego sub na Worksheet_Calculate zdarzenie arkusza, który chcesz zaktualizować.

Private Sub Worksheet_Calculate()

    Call hidelines2

End Sub

Ważne jest, aby umieścić je we właściwym miejscu, zobacz animację poniżej.

enter image description here


Dziękuję za wyjątkowy wysiłek. Nie chcę ci więcej przeszkadzać - twój czas jest ceniony. (Spróbuję znaleźć obejście) Teraz dostaję metoda „ukryty” obiektu „zakres” nie powiodła się następnie Wystąpił błąd automatyzacji Okno EXCEL zostaje zabite
Ed Regis

@EdRegis przepraszam, czy to nie działa dla ciebie, czy nie tego chcesz?
Jonno

Postępowałem dokładnie według instrukcji, ale doprowadziło to do powyższych błędów.
Ed Regis

@EdRegis to dziwne, nie edytowałem twojego kodu, tylko dodałem go do zdarzenia obliczania. Jaka wersja programu Excel?
Jonno

2016 - Mogę wysłać Ci cały arkusz kalkulacyjny, jeśli jesteś zainteresowany
Ed Regis

0

Jeśli nie potrzebujesz tego na dużą skalę, to zadziała -

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

To nie tak, że zobaczysz E3, E4 lub E5, chyba że zmienisz swój wybór gdzieś na arkuszu. Nie jest to jednak dobre na dużą skalę.

To było najlepsze rozwiązanie, które mogłem znaleźć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.