Página 1 de 1

Como procurar registro e deletar a linha

Enviado: 27 Nov 2015 às 18:46
por ivancs
Ola amigos do Fórum,
Tenho uma planilha , a Plan8, com registros sobre clientes e dados desses clientes, tais como nome, telefone, endereço, e-mail, etc. Na coluna B é o campo NOME, nas outras colunas os outros campos. Desejo fazer uma macro que procure o nome de um determinado cliente, e ao encontrar, delete o registro, ou seja, delete a linha inteira.
Então, fiz essa simples macro abaixo, e usei o método FIND para procurar o nome do cliente:

Sub ProcuraEDeleta()
Dim resultado As Range
Dim cliente As String
cliente = InputBox("Qual o cliente a ser procurado?")
Sheets("Plan8").Select
Set resultado = Range("B1:B100").Find(cliente)
Range(resultado.Address).Select
Rows.Delete
End Sub

Mas as duas últimas linhas não funcionam. O que preciso é apenas selecionar a célula do nome do cliente procurado(na InputBox) e DELETAR a linha dele. Alguém pode ajudar?
Abraço a todos.

Como procurar registro e deletar a linha

Enviado: 27 Nov 2015 às 20:26
por Parkeless
Está dando erro porque a própria variante "resultado" é um range... então ao invés de você escrever:
Código: Selecionar todos
Range(resultado.Address).Select
Simplesmente escreva:
Código: Selecionar todos
resultado.select
Mas tem mais um detalhe: em Rows.Delete, você não está especificando qual linha o Excel deve excluir; acho que assim ele vai excluir todas. Substitua por resultado.Rows.Delete.

Hm... você também pode simplificar seu código, se quiser, dessa forma:
Código: Selecionar todos
Sub ProcuraEDeleta()

Dim cliente As String
cliente = InputBox("Qual o cliente a ser procurado?")

Sheets("Plan8").Range("A1:A100").Find(cliente).Rows.Delete

End Sub
Se o cliente não for encontrado, dará erro, mas um on error resume next resolve.

Abraço!

Re: Como procurar registro e deletar a linha

Enviado: 27 Nov 2015 às 21:47
por ivancs
Olá, Parkless,
Sou muito agradecido a sua resposta, e as suas explicações, me ajudaram bastante, gostei do resumo que você propõe, mais fácil do que o meu caminho. Mas, em qualquer um dos dois casos sugeridos por você está eliminando, além de eliminar a linha do cliente procurado na InputBox, mas também está eliminando o nome do cliente do último registro, não elimina o ultimo registro inteiro, mas apenas o nome do cliente do último registro, e deixa telefone, endereço, e-mail desse ultimo registro, tudo intacto, e limpa apenas o NOME do ultimo cliente. Já tentei entender o que possa estar havendo, mas não consegui. Se souber, ajuda aí. Grande abraço.
Ivan

Como procurar registro e deletar a linha

Enviado: 27 Nov 2015 às 22:11
por Parkeless
Ivan,

Desculpe, cometi um erro.

Em qualquer um dos casos, apenas troque o .Rows.Delete por .EntireRow.Delete.

O que o código estava fazendo era, ao invés de excluir a linha inteira, excluía apenas a célula do nome e puxava as outras para cima, o que dava a impressão de que o último nome foi apagado ^^'

Tenta aí