VBA Buscar Valor en Columna
Este artículo demostrará cómo utilizar VBA para buscar un valor en una columna.
Podemos utilizar Range.Find para recorrer una columna de valores en VBA y encontrar todas las celdas del rango que coincidan con los criterios especificados.
Recorrer una Columna con Range.Find y Range.FindNext
En el ejemplo siguiente, estamos recorriendo los datos de la columna y buscando la palabra «Atrasado». Cuando encuentre la palabra, marcará la celda cambiando el color del texto de la celda a rojo. A continuación, utilizará el método Range.FindNext para pasar a la siguiente celda y seguir buscando la palabra, continuando el bucle hasta el final del rango de celdas especificado.
Sub Bucle_Buscar()
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("Atrasado", rngSearch, xlValues)
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
Cuando el código se ejecuta, guarda la dirección de la primera celda donde se encuentra el dato en la variable strFirstAddress y cambia el color del texto a rojo. A continuación, se crea un bucle para encontrar la siguiente celda que contiene los datos requeridos. Cuando se encuentra el valor, el color del texto cambia a rojo y luego se compara la dirección de la celda donde se encuentra el valor con la cadena strFirstAddress. Si no coinciden, el bucle continúa, encontrando cada instancia de la palabra «Atrasado». Una vez que el bucle llega al final del rango de celdas (es decir, F17), vuelve al principio del rango (F1) y continúa el bucle. Una vez que alcanza la dirección de la celda F3 por segunda vez, ya que es la misma que la variable almacenada strFirstAddress, el bucle se detendrá.