Ir para conteúdo
Fórum Script Brasil
  • 0

Ocultar linhas VBA


rafra

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 1

Ola rafra, veja se o código abaixo te ajuda.

Estou anexando um GIF que mostra o resultado obtido ao aplicar o código abaixo.
Dessa forma é possível fazer com que as linhas sejam exibidas ou não, de acordo com o preenchimento em determinada célula que pode ser adequada por intermédio do código.

O código abaixo deverá ser inserido seguindo os passos abaixo:
1. Com o Excel aberto,
2. Pressione Alt+F11
3. No lado esquerdo estará o Projeto - VBAProject
4. Abra a pasta Microsoft Excel Objetos
5. Clique duas vezes em EstaPasta_de_trabalho
6. Cole o código abaixo
7. No código defini o nome da guia para reconhecimento com o nome "Ocultar" (altere para o nome da sua guia)
8. Defini a célula que deve estar preenchida (ou não) na variável vLinhas_ColunaI, caso seja outra célula, altere o range definido.
9. Se manter esse código, adeque o nome da guia e preencha ou não a célula I7 que o efeito será aplicado conforme o GIF.

' vgLoop = Usado para estrutura de repetição.
Dim vgLoop As Long

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ' vLinhas_ColunaI = Usado para definir quais linhas da coluna I deverão ser verificadas caso ocorra alteração.
    ' vRow            = Usado para varrer todas as linhas do RANGE que será definido na variável vLinhas_ColunaI.
    Dim vLinhas_ColunaI As Range
    Dim vRow As Variant
    
    Set vLinhas_ColunaI = Range("I7")
    
    ' Valida apenas se ocorreu alteração no range acima.
    If Not Intersect(Range(Target.AddressLocal), vLinhas_ColunaI) Is Nothing Then
        ' Varre todas as linhas do range.
        For Each vRow In vLinhas_ColunaI.Rows
            ' Caso alguma linha contenha informação, então exibe as linhas.
            If vRow.Value2 <> "" And IsNull(vRow.Value2) = False Then
                Call fsOcultarLinhas("Ocultar", True)
                ' Finaliza execução da SUB.
                Exit Sub
            End If
        Next
        ' Se chegou até aqui, então na estrutura FOR não foi encontrado nenhum valor preenchido. Logo, oculta as linhas.
        Call fsOcultarLinhas("Ocultar")
    End If
End Sub

Sub fsOcultarLinhas(ByVal vpNomeGuia As String, Optional ByVal vpExibirLinhas As Boolean = False)
    ' vpNomeGuia     = Nome da guia que terá as células ocultas.
    ' vpExibirLinhas = Define se deve ser exibido ou não as linhas caso seja necessário (TRUE se sim, FALSE se não).
    '                  Variável OPCIONAL com valor padrão = FALSE.
    
    ' Seleciona a guia.
    Sheets(vpNomeGuia).Select
    ' Seleciona as linhas
    Rows("8:28").Select
    ' Define se oculta ou não as linhas de acordo com o vpExibirLinhas.
    If vpExibirLinhas = True Then
        Selection.EntireRow.Hidden = False
    Else
        Selection.EntireRow.Hidden = True
    End If
End Sub

 

OcultarLinhas_2x.gif

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...