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
Versión de Microsoft Office
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
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;
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);
Prosiga con la búsqueda mientras haya coincidencias.
While Not currentFind Is Nothing
while(currentFind != null)
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; }
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; }
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;
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
Descripción de los parámetros opcionales en las soluciones de Office