Ir ao conteúdo
  • Cadastre-se

Excel Deletar a última linha de uma planilha, desde que atenda um pré requisito


Posts recomendados

Boa noite a todos,

Tenho uma planilha, onde preciso deletar algumas células em uma tabela, onde determinada situação aconteça.

Uma explicação do objetivo desta parte da planilha: Sempre que o usuário escolher um lote, eu quero transferir os dados desta linha para o lote escolhido e deletar ela do lote atual.

Atualmente se for escolhido uma linha no meio da tabela, o código funciona perfeitamente, porém se a linha onde for escolhido o lote, for a ultima da tabela, da o seguinte erro:

Erro em tempo de execução '1004':

Isto não iria funcionar porque moveria células em uma tabela da planilha.

Ao depurar ele aponta a linha:

ActiveCell.Delete

Segue planilha em anexo auxiliar na verificação, porém sou bem iniciante no vba do excel, então o código está bem primário:

 

Obs: planilha esta com extensão xlsm, tive que por em .rar para anexar, tem outra forma de add aqui?

gado_teste_4.rar

Link para o comentário
Compartilhar em outros sites

4 horas atrás, CasaDoHardware disse:

Não consegui identificar qual é o codigo que você usa para deletar os dados.

Uma das primeiras coisas a fazer é centralizar essas 10 planilhas em 1 unica, talvez nao precise nem do vba.

Preciso que elas estejam separadas a pedido do cliente, a parte que exclui os dados esta no modulo 2 bem no final:

 

Verificador = 1

While Verificador = 1
    With Worksheets("Lote 01").Range("N3:N5000")
        Set b = .Find("Lote 02", LookIn:=xlValues)
        If Not b Is Nothing Then
            b.Select
            ActiveCell.Delete
            Verificador = 1
        Else
            MsgBox "Gravado com sucesso!", vbInformation, "PESQUISA"
            Verificador = 0
        End If
    End With

 

 

adicionado 3 minutos depois
2 horas atrás, osvaldomp disse:

No lugar de Delete experimente ClearContents:


ActiveCell.ClearContents

 

porém se eu usar clearcontents vai apagar apenas o conteúdo da célula e não da linha inteira da tabela, alem de que não vai fazer as linhas de baixo subirem.

 

Preciso que a tabela esteja sempre apenas com linhas preenchidas, as vazias tem que ser apagadas, mas sem apagar a linha toda da planilha, para não interferir na tabela do lado.

 

Muito obrigado pela atenção que vocês estão me dando.

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Scoterx disse:

porém se eu usar clearcontents vai apagar apenas o conteúdo da célula e não da linha inteira da tabela, alem de que não vai fazer as linhas de baixo subirem.

 

substitua

b.Select
ActiveCell.Delete

 

por

.ListObject.ListRows(b.Row - 2).Delete

 

 

3 horas atrás, Scoterx disse:

Preciso que a tabela esteja sempre apenas com linhas preenchidas, as vazias tem que ser apagadas, ...

 

Cabe comentar que na parte do seu código em que está ocorrendo o erro, o critério utilizado para (tentar) excluir a linha é que a linha contenha Lote 02 na coluna N, e não que a linha esteja vazia. Não examinei o restante do código.

Link para o comentário
Compartilhar em outros sites

23 minutos atrás, osvaldomp disse:

 

substitua


b.Select
ActiveCell.Delete

 

por


.ListObject.ListRows(b.Row - 2).Delete

 

 

 

Cabe comentar que na parte do seu código em que está ocorrendo o erro, o critério utilizado para (tentar) excluir a linha é que a linha contenha Lote 01 na coluna N, e não que a linha esteja vazia. Não examinei o restante do código.

 

Muito Obrigado Osvaldomp, eu substitui como você indicou e funcionou quase que perfeitamente, agora ele não transfere mais a data que esta na celula o3 para a coluna w na tabela do lado, mas acredito que seja fácil de resolver, vou tentar algumas coisa aqui.

 

voce poderia me explicar o que essa linha de comando faz exatamente? 

 

em relação ao critério para deletar, você está correto, a ideia é localizar as linhas que tenham algum lote escrito na coluna N, transferir as informações para os lotes escolhidos, alimentar a segunda tabela com entradas e saidas e por fim deletar as linhas para as que estiverem embaixo subam, nao deixando linhas vazias. 

Link para o comentário
Compartilhar em outros sites

22 minutos atrás, Scoterx disse:

 

... eu substitui como você indicou e funcionou quase que perfeitamente, agora ele não transfere mais a data que esta na celula o3 para a coluna w na tabela do lado, ..

Não procede a sua observação, pois nem as linhas que eu sugeri para você substituir e tampouco a linha que eu sugeri para você acrescentar têm qualquer interferência com a transferência da célula O3.

 

voce poderia me explicar o que essa linha de comando faz exatamente? 

O comando exclui o trecho da linha contido na Tabela, isto é, o trecho da linha contido em B:N.

 

 

Link para o comentário
Compartilhar em outros sites

12 minutos atrás, osvaldomp disse:

 

De fato eu não imagino uma ligação entre as linhas, mas quando eu escrevo algum lote em linhas no meio da tabela a data é transferida, mas se a ultima linha da tabela estiver preenchida a data vai vazia, ainda não consegui resolver, mas realmente é muito estranho.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!