Notifications
Clear all

Macro para excluir linhas em várias planilhas

9 Posts
3 Usuários
0 Reactions
2,776 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia, pessoal.

Consegui fazer uma macro (o que, no meu caso, é um feito e tanto) que debloqueia e exclui as linhas em branco (inutilizadas) na planilha 1 - "Dados da Licitação" clicando no botão "Gerar", depois ela bloqueia novamente. O problema é que as planilhas 2 - "Formação de Preços" e 3 - "Proposta de Preços" dependem da primeira (Dados da Licitação). Então, preciso do seguinte:

• A macro que fiz precisa, após fazer a limpeza na 1ª planilha, desbloqueie a planilha 2, exclua os resultados da coluna A que aparecem "#REF!", bloqueie a planilha 2 novamente, desbloqueie a planilha 3 e exclua os resultados da coluna A que aparecem "#REF!" e bloqueie novamente.

Acredito que seja possível e que nem dê muito trabalho, mas o conhecimento limitado que tenho de macros (limitado? isso tudo?!) não me ajuda muito nesse caso.

Agradeço desde já.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

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

Bom dia!!!

Como estou no serviço não posso baixar seu anexo...

Veja um exemplo que pode te ajudar...

.. O exemplo abaixo só te atenderá com adaptação.

Private Sub LimparPlan_Click()
    
 Application.ScreenUpdating = False
    Sheets("Nome de uma das planilha").Select
    Range("A2:N90000").Select
    Selection.Delete
    Sheets("Item_Cadastro").Select
    Range("A2:N90000").Select
    Selection.Delete
    CadastroPronto.Select
    Range("A2:N90000").Select
    Selection.Delete
    cobaia.Select
  Application.ScreenUpdating = True
  Unload Me
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/01/2012 8:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá alexandrevba, desculpe a demora em responder, mas só tive condições de olhar hoje.

Fiz umas alterações na macro e ficou assim:

Sub DelLine()
 Sheets("Dados da Licitação").Select
  ActiveSheet.Unprotect Password:="123"
   Columns("A:A").Select
   Selection.SpecialCells(xlCellTypeBlanks).Select
   Selection.EntireRow.Delete
  ActiveSheet.Protect Password:="123"
 Sheets("Formação de Preços").Select
  ActiveSheet.Unprotect Password:="123"
   Columns("A:A").Select
   Selection.SpecialCells(xlCellTypeBlanks).Select
   Selection.EntireRow.Delete
  ActiveSheet.Protect Password:="123"
 Sheets("Proposta de Preços").Select
  ActiveSheet.Unprotect Password:="123"
   Columns("A12:A501").Select
   Selection.SpecialCells(xlCellTypeBlanks).Select
   Selection.EntireRow.Delete
  ActiveSheet.Protect Password:="123"
End Sub

Em:
Sheets("Formação de Preços").Select
ActiveSheet.Unprotect Password:="123"
Columns("A:A").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
ActiveSheet.Protect Password:="123"

Preciso que o que está em destaque delete as células da coluna A que contenham o erro de vínculo, ou seja, #REF!

Outro problema está relacionado com Sheets("Proposta de Preços").Select: corrigindo o problema acima sei que terei problemas com as células que estão mescladas. Tem como resolver?

Grato,

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/01/2012 3:59 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Você não poderia deixar de usar células mescladas?

Poderia nomear os intervalos, depois usar essa rotina para excluir as referencias com erro.

Sub Deletar_Intervalo_Nomeado()
Dim nName As Name
    For Each nName In Names
        If InStr(1, nName.RefersTo, "#REF!") > 0 Then
            nName.Delete
        End If
    Next nName
   
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/01/2012 5:28 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia, alexandrevba.

Se você baixar o arquivo vai notar porque não tenho como deixar de mesclar. Vou testar seu código e ver o que consigo. Devo reportar alguma coisa ainda hoje.

Grato.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 27/01/2012 7:24 am
(@scainet)
Posts: 33
Eminent Member
 

Estou ressucitando este tópico.

Preciso de uma macro que selecione e exclua as linhas de uma planilha que contém erro #REF!.
Essa planilha que contém #REF! é porque está vinculada com outra onde foi deletado algumas linhas, então preciso colocar uma rotina que elimine essas linhas com #REF! na planilha secundária.

Tentei com o código acima mas não consegui nada.

 
Postado : 17/10/2015 7:47 am
(@scainet)
Posts: 33
Eminent Member
 

Desculpe pela postagem seguida, mas é que o forúm não está liberando o botão "Editar" mais. Dai complica muito.

Enfim, eu conseguir fazer o que eu quero com o módulo abaixo.

Porém ele não funciona quando a planilha não apresenta células com erro.
Eu queria inserir um "If" ali para que quando ele não encontrasse células com erro, a sub fosse fechada "Exit Sub".
Mas não sei como fazer.

Sub DelLine()
 Sheets("Planilha1").Select
   Columns("A:A").Select
   Selection.SpecialCells(xlCellTypeFormulas, xlErrors).Select
   Selection.EntireRow.Delete
Sheets("Planilha2").Select
 End Sub
 
Postado : 17/10/2015 8:41 am
(@mprudencio)
Posts: 2749
Famed Member
 

Não como é a planilha mas se ao inves de vicular os dados eles fossem carregados pelo VBA, assim qdo a primeira for apagada os dados da segunda nao sofreram alterações.

Pense nisso.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 17/10/2015 10:00 am
(@scainet)
Posts: 33
Eminent Member
 

Mesmo assim não consigo pensar em uma solução para o problema.

 
Postado : 19/10/2015 6:14 am