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.