VBA Localizar Valor na Coluna
Este artigo demonstrará como usar o VBA para localizar um valor em uma coluna.
Podemos usar Range.Find para percorrer uma coluna de valores no VBA e encontrar todas as células do intervalo que correspondem aos critérios especificados.
Fazer Loop em uma Coluna com Range.Find e Range.FindNext
No exemplo abaixo, estamos percorrendo os dados da coluna e procurando a palavra “Vencido”. Quando a palavra for encontrada, a célula será marcada, mudando a cor do texto da célula para vermelho. Em seguida, ele usará o método Range.FindNext para passar para a próxima célula e continuar a procurar a palavra, continuando o loop até o final do intervalo de células especificado.
Sub LoopLocalizar()
Dim strFirstAddress As String
Dim rngFindValue As Range
Dim rngSearch As Range
Dim rngFind As Range
Set rngFind = ActiveSheet.Range("F1:F17")
Set rngSearch = rngFind.Cells(rngFind.Cells.Count)
Set rngFindValue = rngFind.Find("Vencido", rngSearch, xlValues, xlWhole)
If Not rngFindValue Is Nothing Then
strFirstAddress = rngFindValue.Address
rngFindValue.Font.Color = vbRed
Do
Set rngFindValue = rngFind.FindNext(rngFindValue)
rngFindValue.Font.Color = vbRed
Loop Until rngFindValue.Address = strFirstAddress
End If
End Sub
Quando o código é executado, ele salva o endereço da primeira célula em que os dados são encontrados na variável strFirstAddress e altera a cor do texto para vermelho. Em seguida, é criado um loop para localizar a próxima célula que contém os dados necessários. Quando o valor é encontrado, a cor do texto é alterada para vermelho e, em seguida, o endereço da célula em que o valor foi encontrado é comparado com a string strFirstAddress. Se não forem iguais, o loop continua, encontrando cada instância da palavra “Vencido”. Quando o loop chegar ao final do intervalo de células (ou seja, F17), ele voltará ao início do intervalo (F1) e continuará o loop. Quando atingir o endereço da célula F3 pela segunda vez, como ele é o mesmo da variável armazenada strFirstAddress, o loop será interrompido.