Notifications
Clear all

Macros Excluir Linhas Em Branco

20 Posts
2 Usuários
0 Reactions
3,977 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
 

Boa tarde!!

Para mim não houve erro!!

Att

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

Pra mim está retornando erro nessa planilha em específico.
O que poderia ser?
Teria outra macro para excluir as células em branco da coluna A ?

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

Me parece que o metodo para incluir o valor na ultima linha deveria ser
Range("A" & ActiveCell.Row + 1).Value = "fim de arquivo" ou seja se a ultima linha for 106331, será inclido em A106332 a informação

assim: Range("a1" & ActiveCell.Row + 1).Value = "fim de arquivo" será incluido a infomaçao na celula A1106332 (A1 & 106332)

Então é possivel que esteja ultrapassando os limites de sua planilha

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

Boa noite!!

Que versão você está usando?

Att

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

Reinaldo, deve ficar assim é isso? está dando erro 400.

Range("a" & ActiveCell.Row + 1).Value = "fim de arquivo"
Range("a").Select

Alexandre,

Versão 2010

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

Boa noite!!

Tente adaptar esse...

Public Sub Teste()

Dim R As Long
Dim C As Range
Dim n As Long
Dim rng As Range

On Error GoTo skip
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

If Selection.Rows.Count > 1 Then
Set rng = Selection
Else
Set rng = ActiveSheet.UsedRange.Rows
End If
n = 0
For R = rng.Rows.Count To 1 Step -1
If Application.WorksheetFunction.CountA(rng.Rows(R).EntireRow) = 0 Then
rng.Rows(R).EntireRow.Delete
n = n + 1
End If
Next R

skip:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
Postado : 10/12/2012 7:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alexandre,

Esta está dando erro:

O sistema está criticando a linha: Public Sub Teste()

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

Alterando a linha conforme informei a outra (select) permanece como sendo Range("a1").Select (tem como objetivo reposicionar o foco na primeira linha)

Quanto ao codigo do colega Alexandre, aqui (excel 2003 e 2010) funciona normal. Qual a mensagem de erro retornada ?

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

Bom dia!!

No topo tente assim...

Option Explicit
Public Sub Test()

Ou...

Option Explicit
 Sub Test()

Eu não testei!
Att

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

Bom dia!!

Ou use esse..

Sub DeletearVazio()

On Error Resume Next
Range("A:A").Select
Selection.EntireRow.SpecialCells(xlBlanks).EntireRow.Delete

On Error GoTo 0

End Sub

Att

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

Caros, Acredito que o problema seja a quantidade de linhas da planilha, pois em planilhas pequenas está ok.

Testei assim e não funcionou:

Option Explicit
Sub Test()

Public Sub Teste()

Dim R As Long
Dim C As Range
Dim n As Long
Dim rng As Range

On Error GoTo skip
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

If Selection.Rows.Count > 1 Then
Set rng = Selection
Else

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

Bom dia!!

tente com o ultimo que eu postei...
Há algo de estranho, pois nos meus teste com sua rotina não tive problemas, para verificar isso detalhadamente, deveria mos ter um arquivo modelo compactado, para melhor analisar.
Att

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

Alexandre,

A última que vc postou, quando eu executo, ela APAGA TODA a planilha.!
Sendo que eu preciso apenas excluir O QUE ESTIVER VAZIO NA COLUNA A.

Eu não posso postar a planilha, porque é o cadastro de clientes da empresa, pode me prejudicar entendeu?!

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

Bom dia!!

Foi por isso que eu deixei em negrito modelo compactado, não precisa ser os mesmo dados.

Exemplo, como eu vou saber se em seu arquivo em milhões de células não tem um ou outra linha ou coluna que tem células mescladas, isso também poderia gerar o erro.

Eu não posso adivinha, visto que nos meus teste eu não tive o mesmo problema, a parte que me falta para ter erro, está em seu arquivo.
Vamos aguardar quem realmente endente de VBA, para te ajudar!
Abraços at+++
Att

 
Postado : 11/12/2012 8:34 am
Página 1 / 2