Notifications
Clear all

Apagar última linha preenchida

16 Posts
2 Usuários
0 Reactions
3,261 Visualizações
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Pessoal,
Boa tarde!

Gostaria de uma macro que apasse a última linha preenchida de uma tabela. A tabela vai das colunas "A" à "D". Porém, o botão da macro irá ficar na Plan2 e a tabela está na Plan1.

O código que estou usando é o seguinte, mas não estou conseguindo configurá-lo para apagar da Plan1, onde está a tabela. A planilha está com proteção, e o código de bloqueio é 1234.

    Sub Inicializar()

    'Desprotege a planilha
    ActiveSheet.Unprotect Password:="1234"

    End Sub

    Sub Finalizar()

    ' Protege a planilha
    ActiveSheet.Protect Password:="1234"

    End Sub

    Sub Desfazer()

    linha = Range("A" & Rows.Count).End(xlUp).Row
    Range("A" & linha, "D" & linha).Select

    With Sheets("Plan1")

    Inicializar

    If MsgBox("Tem certeza que deseja apagar o último lançamento? ", vbQuestion + vbYesNo) Then Range("A" & linha, "D" & linha).Delete 'Else exit sub

    Finalizar

    End With
    End Sub[/list:u:105b9mxz]

    Alguém pode me ajudar?

    Obrigado.

     
Postado : 23/12/2014 10:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Uma possibilidade

Sub Desfazer()
Dim Linha As Integer
    With Sheets("Plan1")
        Linha = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A" & Linha, "D" & Linha).Select
        If MsgBox("Tem certeza que deseja apagar o último lançamento? ", vbQuestion + vbYesNo) = vbYes Then
            .Unprotect Password:="1234"
            .Range("A" & Linha, "D" & Linha).EntireRow.Delete
            .Protect Password:="1234"
        End If
    End With
End Sub
 
Postado : 23/12/2014 11:50 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Pessoal,
Bom dia!

Tenho uma planilha com 2 guias, plan1 e plan2.
Na plan1, tenho uma tabela com dados (da coluna "A" à "D") e na plan2 um botão (macro) que deverá excluir a última linha preenchida da tabela na plan1.

Estou usando o código abaixo, porém não está apagando da plan1, mas sim da guia em que a Macro está localizada (plan2).
Poderiam me ajudar? Acredito que a solução seja simples.

    
Sub Inicializar()
    
    'Desprotege a planilha, pode ser usado para todas as outras macros que precise fazer alteração
ActiveSheet.Unprotect Password:="1234"
    
    End Sub

    Sub Finalizar()
    
    ' Protege a planilha
ActiveSheet.Protect Password:="1234"
    
    End Sub
    
Sub Desfazer()

linha = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & linha, "D" & linha).Select

With Sheets("Plan1")
    
    Inicializar
    
    If MsgBox("Tem certeza que deseja remover o último lançamento? ", vbQuestion + vbYesNo) Then Range("A" & linha, "D" & linha).Delete             'Else exit sub
    
    
    Finalizar
    
    End With
    End Sub

Obrigado!!

 
Postado : 06/01/2015 5:53 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Uma possibilidade

Sub Desfazer()
Dim Linha As Integer
    With Sheets("Plan1")
        Linha = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A" & Linha, "D" & Linha).Select
        If MsgBox("Tem certeza que deseja apagar o último lançamento? ", vbQuestion + vbYesNo) = vbYes Then
            .Unprotect Password:="1234"
            .Range("A" & Linha, "D" & Linha).EntireRow.Delete
            .Protect Password:="1234"
        End If
    End With
End Sub

Reinaldo,
Obrigado pela ajuda, porém o código está apresentando o seguinte erro: "O método select da classe Range falhou", na linha ".Range("A" & Linha, "D" & Linha).Select"
Sabe como corrigir este problema?

Abraços.

 
Postado : 06/01/2015 6:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tente assim
Altere essa linha

With sheets("Plan1")

para

With Worksheets("Plan1")

Att

 
Postado : 06/01/2015 6:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja a resposta no outro post
viewtopic.php?f=10&t=14034

Att

 
Postado : 06/01/2015 6:08 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Bom dia!!

Veja a resposta no outro post
viewtopic.php?f=10&t=14034

Att

Bom dia,
Alexandre!

Me desculpe, mas havia esquecido que havia aberto este tópico no fim do ano passado para tratar esta mesma dúvida.
Irei trancá-lo e tratá-lo a partir do outro.

Abraços.

 
Postado : 06/01/2015 6:11 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Uma possibilidade

Sub Desfazer()
Dim Linha As Integer
    With Sheets("Plan1")
        Linha = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A" & Linha, "D" & Linha).Select
        If MsgBox("Tem certeza que deseja apagar o último lançamento? ", vbQuestion + vbYesNo) = vbYes Then
            .Unprotect Password:="1234"
            .Range("A" & Linha, "D" & Linha).EntireRow.Delete
            .Protect Password:="1234"
        End If
    End With
End Sub

Reinaldo,
Obrigado pela ajuda, porém o código está apresentando o seguinte erro: "O método select da classe Range falhou", na linha ".Range("A" & Linha, "D" & Linha).Select"
Sabe como corrigir este problema?

Abraços.

Reinaldo,
Se puder me ajudar, o tópico está sendo tratado no seguinte post: viewtopic.php?f=10&t=14034

Obrigado,
Abs.

 
Postado : 06/01/2015 6:12 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Quanto ao outro post

Sub Desfazer()
Dim Linha As Integer
    With Sheets("Plan1").Activate
        Linha = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A" & Linha, "D" & Linha).Select
        If MsgBox("Tem certeza que deseja apagar o último lançamento? ", vbQuestion + vbYesNo) = vbYes Then
            .Unprotect Password:="1234"
            .Range("A" & Linha, "D" & Linha).EntireRow.Delete
            .Protect Password:="1234"
        End If
    End With
    Worksheets("Plan2").Select
End Sub
 
Postado : 06/01/2015 6:17 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Alexandre,

Ainda não está funcionando, a visualização mudou para a plan1, selecionou a primeira célula da última linha da coluna "A" preenchida (A32 no caso) e apareceu o seguinte erro: "O objeto é obrigatório".

Sabe como me ajudar?

E também em relação ao fim do código, Worksheets("Plan2").Select, gostaria de alterar, pois a planilha possui outras guias, e a macro estará disponível na plan3, plan4, com a mesma função de apagar a última linha da tabela da plan1, então ao executar a macro, gostaria que a visualização se mantivesse na guia em que foi executada.

Pode me ajudar?

Obrigado.

 
Postado : 06/01/2015 6:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Como eu não tive erro, por favor post seu arquivo modelo!!

Eu estou saindo e volto só ao anoitecer, caso alguém não te ajudar, eu o farei!!

Att

 
Postado : 06/01/2015 6:27 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

OK, Alexandre!

Fiz este modelo simples apenas para exemplificar o problema.

Abraços.

 
Postado : 06/01/2015 6:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se assim atende:

Sub Desfazer()
Dim Linha As Integer, nPlan As String
nPlan = ActiveSheet.Name
Linha = Sheets("Plan1").Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
Sheets("Plan1").Activate
Sheets("Plan1").Range("A" & Linha).Select
    If MsgBox("Tem certeza que deseja apagar o último lançamento? ", vbQuestion + vbYesNo) = vbYes Then
        Sheets("Plan1").Unprotect Password:="1234"
        Sheets("Plan1").Range("A" & Linha).EntireRow.Delete
        Sheets("Plan1").Protect Password:="1234"
    End If
Worksheets(nPlan).Select
Application.ScreenUpdating = True
End Sub
 
Postado : 06/01/2015 7:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Rech

Não é permitido a criação de mais de um tópico sobre o mesmo assunto.
Eu fundi os teus 2 tópicos.

Quando o tópico já estiver trancado, se aparecerem mais dúvidas sobre o mesmo assunto, envie uma MP para algum moderador, solicitando para destrancar o tópico.

Patropi - Moderador

 
Postado : 06/01/2015 9:31 am
 Rech
(@rech)
Posts: 0
New Member
Topic starter
 

Rech

Não é permitido a criação de mais de um tópico sobre o mesmo assunto.
Eu fundi os teus 2 tópicos.

Quando o tópico já estiver trancado, se aparecerem mais dúvidas sobre o mesmo assunto, envie uma MP para algum moderador, solicitando para destrancar o tópico.

Patropi - Moderador

Patropi,
Na verdade o outro tópico eu havia aberto no fim do ano passado, porém só depois de ter criado o novo post me dei conta de que já havia criado um anterior. Eu tranquei o outro, pois não tenho permissão para excluir e porque o assunto já estava sendo abordado neste.

Obrigado pelas orientações.

Abrs.

 
Postado : 06/01/2015 10:53 am
Página 1 / 2