none
Como Selecionar uma célula e deletar a linha da célula em VBA RRS feed

  • 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 

    sexta-feira, 27 de novembro de 2015 18:03

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

    sábado, 28 de novembro de 2015 16:06
  • 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.

    sábado, 28 de novembro de 2015 18:42

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.

    sexta-feira, 27 de novembro de 2015 18:28
  • 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

    sábado, 28 de novembro de 2015 16:06
  • 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.

    sábado, 28 de novembro de 2015 18:42