Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

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

NoteNota

En algunos ejemplos de código de este tema se utiliza la palabra clave this o Me o la clase Globals de una forma que es específica de las personalizaciones de nivel de documento, o dependen de funciones de personalizaciones de nivel de documento como los controles host. Estos ejemplos sólo se pueden compilar si se han instalado las aplicaciones requeridas. Para obtener más información, vea Características disponibles por combinación de productos.

El método Find del objeto Microsoft.Office.Interop.Excel.Range le permite buscar texto dentro del rango.

El siguiente ejemplo busca un rango denominado Fruits y 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.

NoteNota

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.

De forma predeterminada, la búsqueda empieza a partir de la celda de la esquina superior izquierda del rango. Busca la palabra "apples" en los valores de celda, haciendo coincidir valores parciales, buscando por filas hacia delante, sin distinguir mayúsculas de minúsculas.

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.

    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 = this.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(currentFind != null) 
    
    
  4. Compare el primer rango encontrado (firstFind) con Nothing. Si firstFind no contiene ningún valor, el código almacena aparte el intervalo encontrado (currentFind).

    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
    
  5. De lo contrario, si la dirección del intervalo encontrado coincide la dirección del primer intervalo encontrado, el código sale del bucle.

    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.

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

    currentFind = this.Fruits.FindNext(currentFind); 
    
    

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

Ejemplo

private void DemoFind() 
{
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 

    // You should specify all these parameters every time you call this method,
    // since they can be overridden in the user interface. 
    currentFind = this.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 = this.Fruits.FindNext(currentFind); 
    }
}

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft