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