Este artigo demonstrará como usar o VBA para localizar um valor em uma coluna.
Podemos usar Range.Find para percorrer uma coluna de valores em VBA para encontrar todas as células no intervalo que correspondem aos critérios especificados.
Loop através de uma coluna com Range.Find e Range.FindNext
No exemplo abaixo, estamos percorrendo os dados da coluna e procurando a palavra “Atrasado”. Ao encontrar a palavra, ele marcará a célula alterando a cor do texto da célula para vermelho. Em seguida, usará o método Range.FindNext para mover para a próxima célula e continuar a procurar a palavra, continuando o loop até o final do intervalo de células especificado.
1234567891011121314151617 | Sub FindLoop ()Dim strFirstAddress As StringDim rngFindValue As RangeDim rngSearch As RangeDim rngFind As RangeDefina rngFind = ActiveSheet.Range ("F1: F17")Defina rngSearch = rngFind.Cells (rngFind.Cells.Count)Defina rngFindValue = rngFind.Find ("Overdue", rngSearch, xlValues)Se não rngFindValue é nada, entãostrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedFazerDefina rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedLoop até rngFindValue.Address = strFirstAddressFim seEnd Sub |
Quando o código é executado, ele salva o endereço da primeira célula onde os dados são encontrados na variável strFirstAddress e muda a cor do texto para vermelho. Um loop é então criado para encontrar a próxima célula que contém os dados necessários. Quando o valor é encontrado, a cor do texto muda para vermelho e então o endereço da célula onde o valor é encontrado é comparado com a string strFirstAddress. Se não forem iguais, o loop continua, encontrando cada instância da palavra “Atrasado”. Assim que o loop atingir o final do intervalo de células (ou seja, F17), ele começará de volta no início do intervalo (F1) e continuará a executar o loop. Uma vez que atinge o endereço da célula F3 pela segunda vez, pois é o mesmo que a variável armazenada strFirstAddress, o loop irá parar.