Usuário com melhor resposta
Como Selecionar uma célula e deletar a linha da célula em VBA

Pergunta
-
Olá, amigos do Fórum,
Eu sei que minha pergunta é simples demais, mas não sei resolver. Usando VBA, faço uma busca na coluna B da planilha, com nomes de clientes, procuro um determinado cliente usando o método Find, encontro, o cursor seleciona o nome do cliente, exemplo, suponha que o cliente procurado está na célula B48. Até aí consigo fazer, funciona certo, mas como eu faço para deletar a LINHA inteira onde está o nome desse cliente? No caso do exemplo, preciso deletar a linha 48 inteira, para pagar o registro completo daquele cliente. Sei fazer até o cursor ficar selecionando a célula do nome do cliente procurado, mas não sei o comando que deleta essa linha. Tentei usar ActiveRows.Delete, dá erro. Como o cursor já está selecionando uma célula, pensei que fosse apenas Rows.Delete, mas também não funciona! Alguém pode me ajudar?
Ivan
Respostas
-
Altera pra isso:
Sub ProcuraEDeleta() Dim resultado As Range Dim cliente As String cliente = InputBox("Qual o cliente a ser procurado?") Sheets("Plan8").Select Do Set resultado = Range("B1:B100").Find(cliente) If resultado Is Nothing Then Exit Do resultado.EntireRow.Delete shift:=xlUp Loop End Sub
Natan
- Sugerido como Resposta André Santo domingo, 29 de novembro de 2015 11:54
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de julho de 2016 14:37
-
Olá Ivan
Algo assim
É muito importante definir os parâmetros do método FIND.
Dê uma olhada em
https://msdn.microsoft.com/en-us/library/office/ff839746.aspx
Sub ProcuraEDeleta() Dim resultado As Range, cliente As String cliente = InputBox("Qual o cliente a ser procurado?") With Sheets("Plan8") Set resultado = .Range("B1:B100").Find( _ What:=cliente, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) If Not resultado Is Nothing Then resultado.EntireRow.Delete Else MsgBox "Cliente não encontrado" End If End With End Sub
Espero que ajude
M.
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de julho de 2016 14:36
Todas as Respostas
-
Olá, amigos,
Voltei para complementar, apenas pra ficar mais claro. Na coluna B tenho o nome dos clientes, e nas outras colunas os demais dados, telefone, e-mail, endereço, etc. O código que eu estou usando apenas procura por um cliente e, uma vez encontrado, deleta o registro, ou seja DELETA a LINHA INTEIRA. Veja meu código:
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
As duas últimas linhas não funcionam. Alguém pode ajudar?
Abraço a todos, Ivan.
-
Altera pra isso:
Sub ProcuraEDeleta() Dim resultado As Range Dim cliente As String cliente = InputBox("Qual o cliente a ser procurado?") Sheets("Plan8").Select Do Set resultado = Range("B1:B100").Find(cliente) If resultado Is Nothing Then Exit Do resultado.EntireRow.Delete shift:=xlUp Loop End Sub
Natan
- Sugerido como Resposta André Santo domingo, 29 de novembro de 2015 11:54
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de julho de 2016 14:37
-
Olá Ivan
Algo assim
É muito importante definir os parâmetros do método FIND.
Dê uma olhada em
https://msdn.microsoft.com/en-us/library/office/ff839746.aspx
Sub ProcuraEDeleta() Dim resultado As Range, cliente As String cliente = InputBox("Qual o cliente a ser procurado?") With Sheets("Plan8") Set resultado = .Range("B1:B100").Find( _ What:=cliente, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) If Not resultado Is Nothing Then resultado.EntireRow.Delete Else MsgBox "Cliente não encontrado" End If End With End Sub
Espero que ajude
M.
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de julho de 2016 14:36