none
VBA - Excluir linha de tabela RRS feed

  • Pergunta

  • Bom dia... Estou começando agora a mexer no VBA, e estou com uma grande dúvida. Em uma aula para montagem de formulários VBA, criei um botão de exclusão de cadastros existentes, no exemplo da aula, o professor usa as linhas normais do excel, eu já gosto de usar tabelas com filtros, aquelas prontas que o excel oferece. Nesse vba eu digito o nome do produto num campo do form chamdo txtNome, ele pesquisa e me retorna o valor respectivo da tabela, quando vou excluir da um erro na linha onde é selecionado o item da exclusão, acredito que tenho que me referir a tabela onde quero excluir a linha, mas não sei como o fazer.

    Segue programação:

    Private Sub cmdExcluir_Click()
    'Declarar a variável Resp para receber uma resposta
    Dim Resp As Integer
    'Fazer a busca do registro digitado pelo usuário
    With Worksheets("LtEPIS").Range("E:E")
    Set c = .Find(txtNome.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not c Is Nothing Then
    Resp = MsgBox("Tem certeza que deseja excluir o registro?", vbYesNo, "Confirmação")
    If Resp = vbYes Then
    c.Select
    Selection.EntireRow.Delete (Linha onde ocorre o erro, acredito que tenho que me referir a tabela, mas não sei o fazer)
    'Limpar as caixas de texto
    txtNome.Value = Empty
    txtCA.Value = Empty
    txtDataValidade.Value = Empty
    txtFornecMarca.Value = Empty
    txtDescricao.Value = Empty
    txtDataCad.Value = Empty
    'Colocar o foco na primeira caixa de texto
    txtNome.SetFocus
        Else
        MsgBox "O registro não será excluído!"
    End If
    Else
    MsgBox "EPI não encontrado!"
    End If
    End With
    Exit Sub

    End Sub

    Desde já grato.

    segunda-feira, 3 de agosto de 2015 14:25

Todas as Respostas

  • Olá Israel.

    Qual mensagem de erro aparece?

    Eu consegui simular um erro quando a planilha ativa é diferente da planilha da referência da busca, mas que resolvi resumindo as duas linhas:

    c.Select
    Selection.EntireRow.Delete

    para:

    c.EntireRow.Delete


    Rafael Kamimura - http://excelmaniacos.com

    segunda-feira, 3 de agosto de 2015 18:22
  • Obrigado pela colaboração, mas infelizmente não deu certo...No seu método essa foi a mensagem de erro:

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

    O método delete da classe range falhou.

    Desde já grato.

    O que a função deve fazer é buscar na tabela o mesmo texto escrito no campo txtNome, e quando eu excluir o cadastro do produto, a linha em que o item está inserido deve ser excluída, a questão é que essa linha está numa tabela e não na linha normal de uma planilha, só não sei como dizer isso.

    Já tentei desse modo, mas preciso colocar uma valor à frente da ListRows, e se por exemplo, coloco ("1"), o comando exclui a primeira linha tabela e não a resposta da função Find.

    c.Select
    Selection.ListObject.Listrows ().delete

    • Editado Israel Cord quarta-feira, 5 de agosto de 2015 13:54
    quarta-feira, 5 de agosto de 2015 12:35