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

Estou adicionando isso a um módulo regular do VBA. 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 Passado na linha A1 2 - 5 oculta automaticamente.

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

    
por user746094 06.07.2017 / 17:26

1 resposta

2

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

OeventoWorksheet_Changesóserádisparadoseforarmazenadonocódigodaplanilha.Euadicioneiestecódigoaomeuobjetoeelefuncionoucorretamente,entãobastacolocá-loemsuaplanilhaevocêdeveestarpronto.

Sevocêdesejaqueelesejaexecutadoemváriasplanilhas,vocêtemalgumasopções.Vocêpodecolocarocódigocomoestáemcadaobjetodaplanilhaoupodecolocarocódigoemummóduloeadicionarumachamadaacadaplanilha.Cadafolhateriaalgoassim:

PrivateSubWorksheet_Change(ByValTargetAsRange)CallPassFailCheck(Target)EndSub

Vocêpodecolocaramaiorpartedoseucódigoemummódulocomoeste:

SubPassFailCheck()IfRange("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.

    
por 06.07.2017 / 20:10