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

Código VBA para ocultar o desocultar filas en función de un valor de celda

Aquí está mi código, pero realmente no hace nada, no veo nada malo en ello:

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

Mi intención es que cuando esa celda específica en la fila anterior se establece en “Passed” desde el menú desplegable, entonces la fila de abajo aparecería, si es un “Failed” entonces se ocultará en su lugar.

Respuestas (3)

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

Parece que tu código tiene algunas erratas. Quieres algo que sea como esto:

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 se actualice el ocultamiento/desocultamiento de la fila al cambiar la hoja, ponlo en un 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
1
1
1
2015-08-06 21:24:01 +0000

no había ninguna errata. “rows(51)” es válido. pero no es necesario el modificador “entirerow”

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

para ocultar varias filas

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