VBA EXCEL - OCULTAR LINHAS EM BRANCO (Hide Blank Rows)

Uma das situações recorrentes na utilização do EXCEL é esconder as linhas em branco que, propositadamente ou não, vamos deixando para trás à medida que construímos uma folha de cálculo. Mais tarde, constatamos que aquelas linhas estariam melhor escondidas.
Um opção rápida e consistente é utilizar uma pequena macro em VBA que, mediante um ou mais critérios, permite num só clique escolher as linhas que pretendemos esconder.
Aqui deixo três possibilidades:
One recurring situations in the use of EXCEL is to hide blank lines that, intentionally or not, we will leave behind as we build a spreadsheet. Later, we found that those lines would be better hidden.
One option is to quickly and consistently use a small VBA macro that, through one or more criteria, allows one-click to select the lines you want to hide.
Here I leave three possibilities:

1. 
Esconder todas as linhas em branco desde a linha 2 até à 65000
Hide all blank lines from the line 2 to the 65000

Sub OcultarLinha()
  Dim Linha, LinhaFinal As Integer
  LinhaFinal = Range("A65000").End(xlUp).Row
  For Linha = 2 To LinhaFinal
    If Range("A" & Linha).Value = 0 Then
    Range("A" & Linha).EntireRow.Hidden = True
    Else
    End If
  Next Linha
End Sub

2. 
Esconder todas as linhas, no intervalo entre a linha 4 e a linha 500, que na coluna "G"contenham células em branco ou de valor zero (processamento mais rápido que a alternativa 1)
Hide all rows in the range between line 4 and line 500, that in column "G" cells contain blank or zero (processing faster than the alternative 1)

Sub OcultarLinha()
  Dim i As Integer
  Application.ScreenUpdating = False
    With Sheets("sumario")
      .Cells.EntireRow.Hidden = False
          For i = 4 To 500
            Select Case .Range("g" & i).Value
              Case 0
              .Rows(i & ":" & i).EntireRow.Hidden = True
            End Select
         Next i
    End With
    Application.ScreenUpdating = True
End Sub

3.
Activando o Filtro Automático via VBA. A intenção é esconder as linhas que na coluna 7 ("G") contenham a letra "s" (processamento mais rápido que as alternativas anteriores)
Enabling AutoFilter via VBA. The intention is to hide the lines in column 7 ("G") containing the caracter "s" (that faster processing of the above)
 
Sub OcultarLinha()
    Sheets("Folha1").Select
    Range("A2:G500").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=7, Criteria1:="s"
End Sub

Comentários

  1. Bom dia!
    Gostaria de saber como crio uma macro para ocultar os botão da guia desenvolvedor, pois quando oculto as colunas, os botão eles não são ocultados.
    Agradeço desde já.

    ResponderEliminar
  2. Vai em "formatar controle" - "Propriedades" - Não mover ou dimensionar com células

    ResponderEliminar
  3. Boa noite.

    Ótima dica. Entretanto, coloquei o range "10:1600" e leva quase 2 minutos pra rodar a macro.

    É demorada mesmo? Existe outra dica p agilizar?

    Obrigado!

    ResponderEliminar
  4. Como faço para ocultar em uma planilha (VIA VBA) os dias da semana sábado e domingo? Ou seja, tenho um planilha dos dias (1,2,3...) do mês, mas não quero que apareça sábado e domingo. Os dias estão de B4: AF4, e (sábado e domingo) de B5:AF5, e ao mesmo tempo tenho está condição de B15:AF15 e B16:AF16

    ResponderEliminar
    Respostas
    1. Bom dia
      Pode enviar-me uma cópia da sua planilha para blog.excelcoisas@gmail.com?

      Eliminar
  5. Olá,

    Estou usando uma macro que detecta alterações na plan1 e chama a sua macro que executa o filtro na plan2.
    Mas após a execução do filtro a seleção se mantém na plan2
    Existe algum meio de selecionar uma célula abaixo da ultima alterada na plan1? Assim ficaria como se estivesse em depuração ou Design


    Agradesço desde já!

    ResponderEliminar
  6. Boa tarde, estou trabalhando em uma planilha que preciso que as linhas em que as celulas da coluna C, quando for vazia ou zero, fique oculta, voltando a exibir, quando solicitado.
    sei que por filtro é mais facil, mais existe alguma forma de ser automatico?
    usando o excell?

    MATRIZ Funcionário Unidades Custo por unidade Amount OBS:
    Ana Tereza de Sá Castelo Branco 2 R$ 8,00 R$ 16,00 INCLUINDO SÁBADO
    Deborah Stefanny Machado da Silva 2 R$ 8,00 R$ 16,00
    Eileen Marjorie Melo A. Alencar 2 R$ 8,00 R$ 16,00
    Francisco Erivaldo Leite de Araujo R$ -
    Francisco Hildo Nascimento R$ -
    Jefferson Elias Viveiros Pinheiro R$ -
    Jesica Emanuela de Souza Vieira 2 R$ 8,00 R$ 16,00
    Lucas Vasconcelos Duarte R$ -
    Maria Amalia Dutra Mendes 2 R$ 8,00 R$ 16,00
    Maria de Fatima Pereira Duarte 2 R$ 8,00 R$ 16,00
    Nayara Patricia Alves de Carvalho R$ -
    Rita Maria Alves Costa R$ -
    Deposit Received R$ 96,00

    ResponderEliminar
    Respostas
    1. Olá
      Basta substituir a coluna na macro acima.
      Se tiver dificuldade em utilizar ou trabalhar com macros (VBA), envie-me um exemplo da sua planilha para blog.excelcoisas@gmail.com.

      Cumprimentos
      João

      Eliminar
  7. não consigo acionar a macro, porque a cel vazia esta com formula, como fazer para ocultar linhas mantendo a formula da cel(proc)

    ResponderEliminar
  8. Olá, como eu posso ocultar algumas linhas do Excel de forma que outras pessoas não possa reexibir-las sem que tenha acesso a ao código vba?

    ResponderEliminar
  9. Esse primeiro código oculta uma por uma, não dá pra ocultar de uma vez só? Usando esse mesmo código.

    ResponderEliminar

Enviar um comentário

Mensagens populares deste blogue

EXCEL 2007 - FUNÇÕES PARA CALCULAR HORAS (Functions to Calculate Hours)

EXCEL - SUBSTITUIR PONTO POR VÍRGULA (Changing comma to point) ou vice-versa

CONVERTER HORAS EM DIAS DE TRABALHO (Convert Hours to Workdays)