Ocultar filas según el valor de una celda específica

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

    End If
End Sub

Estoy agregando eso a un módulo VBA normal. Cuando intento ejecutarlo, el sistema abre una pantalla macro. Quiero que esto se ejecute en segundo plano para que todo lo que escriba Pasado en la fila A1 2-5 se oculte automáticamente.

Estoy usando Excel 2012. Por favor ayuda. Gracias :-)

usuario746094
fuente
Lo siento. Estoy usando Excel 2010
user746094

Respuestas:

2

No lo agregue a un módulo VBA normal; póngalo en el módulo de la hoja de trabajo donde desea que esto suceda.

ingrese la descripción de la imagen aquí

El evento Worksheet_Change solo se activará si está almacenado en el código de la hoja de trabajo. Agregué este código a mi objeto y funcionó correctamente, así que solo póngalo en su hoja y estará listo.

Si desea que se ejecute en varias hojas, tiene un par de opciones. Puede poner el código tal como está en cada objeto de la hoja de trabajo, o puede poner el código en un módulo y agregar una Llamada a cada hoja de trabajo. Cada hoja tendría algo como esto:

Private Sub Worksheet_Change(ByVal Target As Range)
    Call PassFailCheck(Target)
End Sub

Luego puede poner la mayor parte de su código en un módulo como este:

Sub PassFailCheck()
    If Range("A1").Value = "Passed" Then
        Rows("2:5").EntireRow.Hidden = True
    ElseIf Range("A1").Value = "Failed" Then
        Rows("2:5").EntireRow.Hidden = False
    End If
End Sub

La segunda opción es un poco más compleja, pero es más fácil de mantener si necesita realizar cambios en el código de forma regular.

Werrf
fuente