Método Range.Find (Excel)

Busca información específica en una hoja de cálculo.

Nota:

¿Le interesa el desarrollo de soluciones que amplían la experiencia de Office en varias plataformas? Vea el nuevo modelo de complementos de Office. Los complementos de Office tienen una huella pequeña en comparación con los complementos y soluciones de VSTO, y se pueden construir utilizando casi cualquier tecnología de programación web, como HTML5, JavaScript, CSS3 y XML.

Sintaxis

expression.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

expresión Variable que representa un objeto Range.

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
What Obligatorio Variant El texto que se va a buscar. Puede ser una cadena o cualquier tipo de datos de Microsoft Excel.
After Opcional Variant La celda después de la que quiere que se inicie la búsqueda. Se corresponde a la posición de la celda activa cuando se realiza una búsqueda desde la interfaz de usuario.

Tenga en cuenta que After debe ser una sola celda del rango. Recuerde que la búsqueda comienza después de esta celda. No se buscará en la celda especificada hasta que el método regrese a esta celda.

Si no se especifica este argumento, la búsqueda comienza después de la celda de la esquina superior izquierda del rango.
LookIn Opcional Variant Puede ser una de las siguientes constantes XlFindLookIn: xlFormulas, xlValues, xlComments o xlCommentsThreaded.
LookAt Opcional Variant Puede ser una de las siguientes constantes xlLookAt: xlWhole o xlPart.
SearchOrder Opcional Variant Puede ser una de las siguientes constantes XlSearchOrder: xlByRows o xlByColumns.
SearchDirection Opcional Variant Puede ser una de las siguientes constantes de XlSearchDirection: xlNext o xlPrevious.
MatchCase Opcional Variant Si es True, la búsqueda distingue entre mayúsculas y minúsculas. El valor predeterminado es False.
MatchByte Opcional Variant Solo se usa si ha seleccionado o instalado la compatibilidad con idiomas de doble byte. True para que los caracteres de doble byte solo coincidan con caracteres de doble byte. False para que los caracteres de doble byte coincidan con sus equivalentes de byte único.
SearchFormat Opcional Variant Formato de la búsqueda.

Valor devuelto

Un objeto Range que representa la primera celda en la que se encuentra información.

Comentarios

Este método devuelve Nothing si no se encuentra ninguna coincidencia. El método Find no afecta a la selección ni a la celda activa.

La configuración de LookIn, LookAt, SearchOrder y MatchByte se guarda cada vez que se usa este método. Si no se especifican valores para estos argumentos la próxima vez que se llame al método, se usarán los valores guardados. Establecer los argumentos siguientes cambia la configuración del cuadro de diálogo Buscar, y cambiar la configuración del cuadro de diálogo Buscar cambia los valores guardados que se usan si se omiten los argumentos. Para evitar problemas, establezca estos argumentos de forma explícita cada vez que use este método.

Use los métodos FindNext y FindPrevious para repetir la búsqueda.

Cuando la búsqueda llega al final del rango de búsqueda especificado, vuelve al principio del rango. Para detener una búsqueda cuando se produzca esta situación, guarde la dirección de la primera celda que se encuentre y, después, pruebe la dirección de cada celda sucesiva que se haya encontrado con esta dirección guardada.

Para buscar celdas que coincidan con diseños más complicados, use una instrucción For Each...Next con el operador Like. Por ejemplo, en el código siguiente se buscan todas las celdas del rango A1:C5 en las que se usa una fuente cuyo nombre comience por las letras Cour. Cuando Microsoft Excel encuentra una coincidencia, cambia la fuente a Times New Roman.

For Each c In [A1:C5] If c.Font.Name Like "Cour*" Then c.Font.Name = "Times New Roman" End If Next`

Ejemplos

En este ejemplo, se busca, en todas las celdas del rango A1:A500 de la hoja de cálculo, una que contenga el valor 2 y se cambia todo el valor de la celda por 5. Es decir, los dos valores 1234 y 99299 contienen un 2, y ambos valores de celda se convertirán en 5.

Sub FindValue()
    
    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A500") 
        Set c = .Find(2, lookin:=xlValues) 
        If Not c Is Nothing Then 
            firstAddress = c.Address 
            Do 
                c.Value = 5 
                Set c = .FindNext(c) 
            Loop While Not c Is Nothing
        End If 
    End With
    
End Sub

En este ejemplo, se busca, en todas las celdas del rango A1:A500 de la hoja de cálculo, una que contenga la subcadena "abc" y se reemplaza por "xyz".

Sub FindString()

    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A500")
        Set c = .Find("abc", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Value = Replace(c.Value, "abc", "xyz")
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
    End With

End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.