2013-10-22 01:45:14 +0000 2013-10-22 01:45:14 +0000
2
2
Advertisement

Kod VBA do ukrywania lub nieukrywania wierszy na podstawie wartości komórki

Advertisement

Heres mój kod, ale tak naprawdę nic nie robi, nie widzę w nim nic złego:

Private Sub PG1(ByVal Target As Range)
    If .Range("E50").Value = "Passed" Then
        Rows("51").EntireRow.Hidden = True
    End If
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51").EntireRow.Hidden = True
    End If
End Sub

Moim zamiarem jest to, że gdy ta konkretna komórka w poprzednim wierszu jest ustawiona na “Passed” z rozwijanej listy, wtedy pojawi się poniższy wiersz, jeśli jest to “Failed”, wtedy zostanie ukryty zamiast tego.

Advertisement
Advertisement

Odpowiedzi (3)

9
9
9
2013-10-22 02:24:58 +0000

Wygląda na to, że twój kod ma w sobie jakieś literówki. Chcesz coś, co jest jak poniżej:

Sub PG1()

    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False
    End If

End Sub

Aby mieć aktualizację ukrywania/rozwijania wierszy podczas zmiany arkusza, umieść ją w zdarzeniu Worksheet_Change:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False

    End If
End Sub
```.
1
1
1
2015-08-06 21:24:01 +0000

nie było żadnej literówki. “rows(51)” jest poprawne. ale nie potrzebujesz modyfikatora “entirerow”

rows(n).hidden=true ; where n is an valid row number

aby ukryć wiele rzędów

range(rows(n1),rows(n2)).hidden=true ; will hide rows n1 though n2
-1
Advertisement
-1
-1
2015-03-27 15:33:16 +0000
Advertisement
Private Sub PG1()
    Range("$E$51").EntireRow.Hidden = (Range("$E$50").Value = "Passed")
End Sub
Advertisement

Pytania pokrewne

6
13
9
10
7
Advertisement