Excel VBA - Excluir linhas de acordo com um critério
É impressionante a quantidade de vezes que vejo esse tipo de dúvida nos fóruns que frequento.
Várias soluções já foram postadas para resolver o problema, mas cada uma mais particular que a outra. Vejam bem, não disse que as soluções eram ruins, mas sim que atendiam somente a uma determinada necessidade.
Pois bem, com base nisso, decidi gastar um tempinho escrevendo uma macro que tenta resolver o problema de forma genérica. Para se ter uma idéia, dêem uma olhada no seguinte código:
Dim linhasExcluidas As Integer
Dim i As Integer
linhasExcluidas = 0
With ActiveSheet
i = linhaInicial
While i < linhaFinal
If CStr(.Cells(i, colunaCriterio).Value) = criterio Then
.Rows(i).Delete
linhasExcluidas = linhasExcluidas + 1
Else
i = i + 1
End If
Wend
End With
ExcluiLinhasPorCriterio = linhasExcluidas
End Function
O que ele faz efetivamente é, receber 4 parâmetros, sendo eles:
- o Ãndice da linha inicial de busca
- o Ãndice da linha final de busca
- o Ãndice da coluna onde se deve buscar o critério
- o valor do critério no formato de string
Recebendo estes parâmetros, ele varre as linhas da planilha ativa a partir do Ãndice da linha inicial até o Ãndice da linha final e em cada linha que passa, compara o valor na coluna cujo o Ãndice também é informado com o parâmetro critério.Por fim, a função retorna quantas linhas foram excluÃdas no processo.
O código abaixo faz uma chamada de exemplo para a função:
MsgBox “Foram excluÃdas ” & ExcluiLinhasPorCriterio(1, 200, 6, “London”) & ” linhas”
End Sub
O que exatamente esta chamada está fazendo é, ler na planilha atual da linha 1 até a 200, sendo que, quando a coluna 6 ou F tiver o valor “London”, esta será excluÃda.
É bom ter ciência de que o código não faz validações sobre como a lista de dados está montada. Também não está previsto em um primeito momento veficações como ranges de dados, valores numéricos ou de data, funcionalidades estas que podem ser implementadas ao longo do tempo para melhorar a função. Portando, cabe a cada um implementar as verificações necessárias para sua necessidade.
Abraços e bom proveito!
Tomás Vásquez
www.tomasvasquez.com.br
