Notifications
Clear all

Excluir linhas ocultas

6 Posts
4 Usuários
0 Reactions
2,256 Visualizações
(@eric-jhon)
Posts: 17
Active Member
Topic starter
 

Bom dia, pessoal.
Como excluir todas as linhas ocultas (resultado de um ou mais filtros) em uma planilha? :|

'Exclui linhas ocultas
TotalRegistroRelatório = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

For i = 2 To TotalRegistroRelatório
    If ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Hidden = True Then
        ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete
    End If
Next

Ao utilizar o código acima ele não exclui todas as linhas de um só vez. Pelos teste que realizei constatei que esse mesmo código apaga apenas metade do total de linhas ocultas. Ou seja, pra que ele venha apagar todas é necessário executá-lo repetidas vezes até chegar no resultado esperado. :?

 
Postado : 27/04/2016 7:59 am
(@alvaro)
Posts: 78
Trusted Member
 

Bom dia Eric, de uma olhadinha se te atende:

'Exclui linhas ocultas
TotalRegistroRelatório = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

For i = 2 To TotalRegistroRelatório Step 1
If ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Hidden = True Then
ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete
End If
Next

Caso atenda, não esqueça de marcar o tópico como resolvido.
Abraços

 
Postado : 27/04/2016 8:28 am
(@eric-jhon)
Posts: 17
Active Member
Topic starter
 

Infelizmente não deu certo. :|

 
Postado : 27/04/2016 11:16 am
edilsonfl
(@edilsonfl)
Posts: 227
Estimable Member
 

tente o mesmo código com uma pequena alteração (-1)

Sub Exclui() 

'Excluir  linhas ocultas
TotalRegistroRelatório = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

For i = 2 To TotalRegistroRelatório
    If ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Hidden = True Then
        ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete
        i = i - 1
    End If
Next
End Sub

Quando ajuda for útil dê um clique na mãozinha, isso atribui ponto ao colaborador.

 
Postado : 27/04/2016 6:24 pm
(@edcronos2)
Posts: 346
Reputable Member
 

dá para ir de baixo para cima

    'Exclui linhas ocultas
    TotalRegistroRelatório = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

    For i = TotalRegistroRelatório To 2 step -1

        If ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Hidden = True Then
            ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete
        End If

    Next
 
Postado : 27/04/2016 6:52 pm
(@eric-jhon)
Posts: 17
Active Member
Topic starter
 

tente o mesmo código com uma pequena alteração (-1)

Sub Exclui() 

'Excluir  linhas ocultas
TotalRegistroRelatório = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

For i = 2 To TotalRegistroRelatório
    If ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Hidden = True Then
        ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete
        i = i - 1
    End If
Next
End Sub

Perfeito! Deu super certo! :D

 
Postado : 29/04/2016 7:44 am