Código VBA para ocultar ou exibir linhas com base em um valor de célula

2

Heres meu código, mas não está realmente fazendo nada, eu não vejo nada de errado com isso:

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

Minha intenção é que, quando essa célula específica na linha anterior for definida como "Aprovado" no menu suspenso, a linha abaixo seja exibida, se for "Falha", ela será ocultada.

    
por I AM L 22.10.2013 / 03:45

3 respostas

8

Parece que seu código tem alguns erros nele. Você quer algo assim:

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

Para que a linha oculte / desmarque a atualização enquanto você altera a planilha, coloque-a em um evento 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
    
por 22.10.2013 / 04:24
1

não houve erro de digitação. "linhas (51)" é válido. mas você não precisa do modificador "wholeerow"

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

para ocultar várias linhas

 range(rows(n1),rows(n2)).hidden=true ; will hide rows n1 though n2
    
por 06.08.2015 / 23:24
-1
Private Sub PG1()
    Range("$E$51").EntireRow.Hidden = (Range("$E$50").Value = "Passed")
End Sub
    
por 27.03.2015 / 16:33