Ocultar linhas com base no valor de uma célula 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

Eu estou adicionando isso a um módulo VBA regular. Quando tento executá-lo, o sistema abre uma tela de macro. Eu quero que isso seja executado em segundo plano, então tudo o que eu digito Passou na linha A1 2 - 5 oculta automaticamente.

Estou usando o Excel 2012. Por favor, ajude. Obrigado :-)

user746094
fonte
Desculpa. Estou usando o Excel 2010
user746094

Respostas:

2

Não o adicione a um módulo VBA comum; colocá-lo no módulo da planilha onde você quer que isso aconteça.

enter image description here

O evento Worksheet_Change só será acionado se for armazenado no código da planilha. Eu adicionei este código ao meu objeto e ele funcionou corretamente, basta colocá-lo em sua planilha e você deve estar pronto para ir.

Se você quer que ele seja executado em várias planilhas, você tem algumas opções. Você pode colocar o código como está em cada objeto da planilha ou pode colocar o código em um módulo e adicionar uma chamada a cada planilha. Cada folha teria algo assim:

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

Você pode então colocar a maior parte do seu código em um 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

A segunda opção é um pouco mais complexa, mas é mais fácil de manter se você precisar fazer alterações no código regularmente.

Werrf
fonte