Notifications
Clear all

Macros Excluir Linhas Em Branco

20 Posts
2 Usuários
0 Reactions
3,976 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caros,

Estou usando a macro abaixo para excluir linhas em branco para uma determinada coluna, estava funcionando normalmente, mas agora passou a dar o erro em anexo.
A MACRO É A SEGUINTE:

Sub tratar()
Sheets("PLAN1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("a1" & ActiveCell.Row + 1).Value = "fim de arquivo"
Range("a1").Select
Do While ActiveCell.Value <> "fim de arquivo"
If ActiveCell.Value = "" Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If

Loop

End Sub

Alguém sabe me explicar o que está errado? o erro está em anexo:

ps: Não posso postar a planilha, pois contém algumas informações confidenciais da empresa, possui 106332 linhas.

 
Postado : 10/12/2012 1:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Experimente assim e veja se atende>

Sub Elvazio()
Sheets("PLAN1").Select
lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For x = lastRow To 1 Step -1
    Range("a" & x).Select
    If ActiveCell.Value = "" Then
        Selection.EntireRow.Delete
    End If
Next
End Sub
 
Postado : 11/12/2012 8:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo, eu ia comentar as postagem, mas acredito que com este seu ultimo código resolverá.

O que eu iria comentar é referente o uso dos Selection nas rotinas anteriores, por exemplo se utilizarmos a instrução :
Supondo que a celula selecionada é "A1", e tenho alguns dados em Linhas diferentes terminando em "A79", então utilizando a instrução :

Selection.SpecialCells(xlCellTypeBlanks).Select

Será selecionada todas as Linhas em Branco até "A78", mas se eu DELETAR (APAGAR) o valor que se encontra em "A79", selecionar "A1" e executar a rotina novamente, será selecionado as mesmas celulas como se em "A79" ainda tivesse algum valor, isto pelo fato que não limpou-se a celula com a opção "Limpar/Tudo", e o excel entende que ainda temos dados nesta celula.

Só para complementar, Tira, de uma olhada no tópico abaxio :
Como Fazer: Macro para excluir Linhas
viewtopic.php?f=10&t=2443&p=10705&hilit=yahoo#p10705

É um pouco diferente do que está pretendendo mas pode ajudar a entender melhor algumas rotinas.

Tira, como voce pode perceber existem varias alternativas para se fazer o que pretende, diferenciando umas e outras dependendo de como estão dispostos nossos dados, por isso que as vezes necessitamos no modelo em questão para poder-se avaliar melhor, como disse que é um arquivo da empresa, quando possível pode-se alterar os dados para alguns ficticios, então se as dicas acima não resolverem, pense nesta possibilidade, sei que são muitos dados, mas facilitaria.

[]s

 
Postado : 11/12/2012 9:08 am
(@luiz-elias)
Posts: 26
Eminent Member
 

Tira,

Bom dia!

Use isto:

Sub DeletarLinhas()
ultima = Cells(Rows.Count, "A").End(xlUp).Row 'Modifique aqui de qual coluna quer localizar a última linha prrenchida

For i = ultima To 1 Step -1
If Cells(i, 1) = "" Then
Rows(i).Delete
End If
Next i

Segue o mesmo modelo da de Reinaldo.

Em anexo também estou encaminhando um planilha modelo.

Sinaliza se conseguiu lhe atender.
End Sub

 
Postado : 11/12/2012 9:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caros,

O código passado pelo REINALDO resolveu meu problema , deu tudo certo agora.

Mauro Coutinho,
Vou dar uma olhada no seu material com calma! Obrigado!

luiz elias,
Valeu, arquivei o seu modelo para caso venha a dar outro erro futuramente!

Esse é o MAIOR E MELHOR FÓRUM de excel de toda a Internet, incrível as pessoas dedicarem um minuto do seu corrido tempo para ajudar a quem tenha alguma dificuldade, clicar na mãozinha é muito pouco para agradecer a ajuda que ganhamos aqui.
Muito obrigado meeeesmo!

 
Postado : 11/12/2012 1:55 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre,

Esqueci de te agradecer, muito obrigado pela sua ajuda também !

 
Postado : 11/12/2012 1:56 pm
Página 2 / 2