Compartir a través de


Cómo: Buscar texto en rangos de hojas de cálculo

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

  • Proyectos de nivel de aplicación

Versión de Microsoft Office

  • Excel 2003

  • Excel 2007

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

El método Find del objeto Microsoft.Office.Interop.Excel.Range le permite buscar texto dentro del rango. Este texto también puede ser cualquiera de las cadenas de error que aparecen en una celda, por ejemplo #NULL! o #VALUE!. Para obtener más información sobre cadenas de error, vea Valores de error en celdas.

En el siguiente ejemplo se busca un rango denominado Fruits y se modifica la fuente de las celdas que contienen la palabra "apples". Este procedimiento también utiliza el método FindNext, que usa los valores de la búsqueda establecidos previamente para repetirla. Especifique la celda a partir de la que se va a realizar la búsqueda y el método FindNext se ocupará del resto.

Nota:

La búsqueda del método FindNext vuelve al principio del rango de búsqueda una vez que ha llegado al final del rango. El código debe garantizar que la búsqueda no entre en un bucle infinito. El procedimiento del ejemplo muestra una forma de tratar este caso usando la propiedad Address.

Para buscar texto en un rango de hoja de cálculo

  1. Declare las variables para buscar en todo el rango, el primer rango encontrado y el rango encontrado actual.

    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
  2. Busque la primera coincidencia, especificando todos los parámetros menos la celda a partir de la cual se realiza la búsqueda.

    currentFind = Fruits.Find("apples", , _
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
    
    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing); 
    
  3. Prosiga con la búsqueda mientras haya coincidencias.

    While Not currentFind Is Nothing
    
    while(currentFind != null) 
    
  4. Compare el primer rango encontrado (firstFind) con Nothing. Si firstFind no contiene ningún valor, el código almacena aparte el rango encontrado (currentFind).

    If firstFind Is Nothing Then
        firstFind = currentFind
    
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Sale del bucle si la dirección del rango encontrado coincide con la dirección del primer rango encontrado.

    ElseIf currentFind.Address = firstFind.Address Then
        Exit While
    End If
    
    else if (currentFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing)
          == firstFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing))
    {
        break;
    }
    
  6. Establezca el aspecto del rango encontrado.

    With currentFind.Font
        .Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
        .Bold = True
    End With
    
    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true; 
    
  7. Realice otra búsqueda.

    currentFind = Fruits.FindNext(currentFind)
    
    currentFind = Fruits.FindNext(currentFind); 
    

En el siguiente ejemplo se muestra el método completo.

Ejemplo

Private Sub DemoFind()
    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing

    Dim Fruits As Excel.Range = Me.Application.Range("A1", "B2")
    ' You should specify all these parameters every time you call this method, 
    ' since they can be overridden in the user interface.
    currentFind = Fruits.Find("apples", , _
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)

    While Not currentFind Is Nothing

        ' Keep track of the first range you find.
        If firstFind Is Nothing Then
            firstFind = currentFind

        ' If you didn't move to a new range, you are done.
        ElseIf currentFind.Address = firstFind.Address Then
            Exit While
        End If

        With currentFind.Font
            .Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
            .Bold = True
        End With

        currentFind = Fruits.FindNext(currentFind)
    End While
End Sub
private void DemoFind() 
{
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 

    Excel.Range Fruits = Application.get_Range("A1", "B3");
    // You should specify all these parameters every time you call this method,
    // since they can be overridden in the user interface. 
    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing); 

    while(currentFind != null) 
    { 
        // Keep track of the first range you find. 
        if (firstFind == null)
        {
            firstFind = currentFind; 
        }

        // If you didn't move to a new range, you are done.
        else if (currentFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing)
              == firstFind.get_Address(missing, missing, Excel.XlReferenceStyle.xlA1, missing, missing))
        {
            break;
        }

        currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        currentFind.Font.Bold = true; 

        currentFind = Fruits.FindNext(currentFind); 
    }
}

Vea también

Tareas

Cómo: Aplicar estilos a los rangos de los libros

Cómo: Hacer referencia a rangos de hojas de cálculo en el código

Conceptos

Trabajar con rangos

Descripción de los parámetros opcionales en las soluciones de Office