Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Macro para procurar uma expressão e excluir a linha (RESOLVIDO)

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Erikson
Colaborador
Colaborador
Mensagens: 80
Registrado em: Dom Ago 28, 2011 7:49 pm

Macro para procurar uma expressão e excluir a linha (RESOLVIDO)

Mensagem por Erikson »

Bom dia amigos,

Tenho uma macro que procura um valor na coluna C, e ao encontra-lo, exclui a linha inteira.
Quando a expressão procurada é encontrada mais de uma vez, a macro deve apagar todas essas linhas. Isso funciona bem quando eu chamo a macro estando selecionada a primeira célula da coluna que contém o argumento procurado, ou seja a macro vai descendo e apagando as linhas onde encontrar a célula com a expressão desejada, porém se eu estiver selecionando uma célula mais abaixo, e que acima exista uma outra célula com a expressão procurada, essa macro não sobe para busca-la e apaga-la, e pior, vira um loop infinito.

Código: Selecionar todos

Sub Exclusao()

LinhaAtual = ActiveCell.Row

    
    Dim UltimaLinha As Long
    'Grava a ultima linha preenchida
    UltimaLinha = Cells(Rows.Count, 3).End(xlUp).Row
    'Percorre a lista
    For i = 1 To UltimaLinha
    'Verifica se o valor é igual ao procurado para exclusão
    If Cells(i, 3).Value = CCur(Me.Base_Codigo) Then 'aqui depois da expressão "Cells(i," o número deve corresponder a coluna de procura do argumento
    Cells(i, 2).Select 'aqui seleciona a linha que encontrou o valor, depois da expressão "Cells(i," é a coluna que será selecionada
    Dim Linha As Long
'    Selection.ListObject.ListRows(LinhaAtual - 6).Delete ' aqui exclui a linha da tabela, dentro do parenteses ficou a variável linha atual selecionada, e o 6 é apenas para descontar linhas de titulos
    Rows(LinhaAtual).Delete Shift:=xlUp
    i = i - 1
    End If
    Next

End Sub
Editado pela última vez por Erikson em Qui Mai 30, 2019 8:30 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Macro para procurar uma expressão e excluir a linha

Mensagem por Reinaldo »

Talvez assim:

Código: Selecionar todos

Sub Exclusao()
Dim i As Long
Dim UltimaLinha As Long

'Determina a ultima linha da coluna "C" preenchida
UltimaLinha = Cells(Rows.Count, 3).End(xlUp).Row

'Inicia o loop invertido
For i = UltimaLinha To 2 Step -1 'To UltimaLinha
    'Verifica se o valor é igual ao procurado para exclusão
    If Cells(i, 3).Value = CCur(Me.Base_Codigo) Then
        Rows(i).Delete Shift:=xlUp
    End If
Next
End Sub


Erikson
Colaborador
Colaborador
Mensagens: 80
Registrado em: Dom Ago 28, 2011 7:49 pm

Re: Macro para procurar uma expressão e excluir a linha

Mensagem por Erikson »

Reinaldo, ficou perfeito, muito obrigado!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder