Jump to content
Fórum Script Brasil
  • 0

Ocultar linhas VBA


Question

1 answer to this question

Recommended Posts

  • 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148911
    • Total Posts
      645018
×
×
  • Create New...