Fruto da necessidade de alguns colegas do Fórum, coloco aqui uma macro que possibilita ocultar as linhas de uma lista ou tabela no Excel. O efeito pode muito bem ser conseguido através do recurso AutoFiltro, mas, como relatado, algumas vezes usuários menos avançados não conhecem a funcionalidade para produzir o efeito determinado.
Para alguns familiarizados, a rotina é uma adaptação da macro que também existe aqui no blog para excluir linhas de acordo com um critério:
Function OcultaLinhasPorCriterio(ByVal nomePlanilha As String, ByVal linhaInicial As Integer, ByVal linhaFinal As Integer, ByVal colunaCriterio As Integer) As Integer
Dim linhasOcultadas As Integer
Dim i As Integer
linhasOcultadas = 0
With ActiveWorkbook.Worksheets(nomePlanilha)
i = linhaInicial
While i <= linhaFinal
If IsEmpty(.Cells(i, colunaCriterio).Value) Then
.Cells(i, colunaCriterio).Rows.Hidden = True
linhasOcultadas = linhasOcultadas + 1
End If
i = i + 1
Wend
End With
OcultaLinhasPorCriterio = linhasOcultadas
End Function |
Function OcultaLinhasPorCriterio(ByVal nomePlanilha As String, ByVal linhaInicial As Integer, ByVal linhaFinal As Integer, ByVal colunaCriterio As Integer) As Integer
Dim linhasOcultadas As Integer
Dim i As Integer
linhasOcultadas = 0
With ActiveWorkbook.Worksheets(nomePlanilha)
i = linhaInicial
While i <= linhaFinal
If IsEmpty(.Cells(i, colunaCriterio).Value) Then
.Cells(i, colunaCriterio).Rows.Hidden = True
linhasOcultadas = linhasOcultadas + 1
End If
i = i + 1
Wend
End With
OcultaLinhasPorCriterio = linhasOcultadas
End Function
Em míudos:
nomePlanilha é o nome da planilha sobre a qual a macro atuará
linhaInicial é o número da linha pela qual a macro comecará a avaliar.
linhaFinal é o número da linha até a qual a macro fará a avaliação
colunaCriterio é o índice numérico da coluna na qual a macro fará o teste do valor vazio.
A macro abaixo faz a chamada a função apontadando para a panilha de nome “Plan1” avaliando a coluna de índice 5 (E) percorrendo até a última linha ocupada:
Sub OcultarLinhasEmBranco()
MsgBox OcultaLinhasPorCriterio("Plan1", 2, ActiveSheet.UsedRange.Rows.Count, 5) & " linhas ocultadas"
End Sub |
Sub OcultarLinhasEmBranco()
MsgBox OcultaLinhasPorCriterio("Plan1", 2, ActiveSheet.UsedRange.Rows.Count, 5) & " linhas ocultadas"
End Sub
Bom proveito!