Como: Pesquisar texto em intervalos de planilha

O Find método de Microsoft.Office.Interop.Excel.Range objeto lhe permite pesquisar texto no intervalo. Esse texto também pode ser as cadeias de erro podem aparecer em uma célula de planilha, como #NULL! ou #VALUE!. Para obter mais informações sobre seqüências de erro, consulte Os valores de erro de célula.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Excel 2007 e Excel 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

O exemplo seguinte procura um intervalo chamado Fruits e modifica a fonte para as células que contêm a palavra "maçãs". Este procedimento também usa o FindNext método, que usa definidos anteriormente pesquisar configurações para repetir a pesquisa. Especifique a célula após ser pesquisado e o FindNext método manipula o resto.

ObservaçãoObservação

O FindNext dispõe de pesquisa de método volta ao início do intervalo de pesquisa após ele atingiu o final do intervalo. Seu código deve garantir que a pesquisa não se dispõe ao redor em um loop infinito. O procedimento de exemplo mostra uma maneira de lidar com isso usando o Address propriedade.

link para vídeo Para uma demonstração de vídeo relacionada, consulte Fazer como i: Use o método Find em um suplemento do Excel?.

Para procurar texto em um intervalo de planilha

  1. Declare variáveis para rastreamento de todo o intervalo, o primeiro intervalo encontrado e intervalo atual encontrado.

    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
  2. Procure a primeira correspondência, especificando a todos os parâmetros, exceto da célula para pesquisar depois.

    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. Continue a pesquisa como há correspondências.

    While Not currentFind Is Nothing
    
    while(currentFind != null) 
    
  4. Comparar o primeiro intervalo encontrado (firstFind) para Nothing. Se firstFind não contém nenhum valor, os armazenamentos de código fora o intervalo encontrado (currentFind).

    If firstFind Is Nothing Then
        firstFind = currentFind
    
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Sair do loop se o endereço do intervalo encontrado corresponde ao endereço do primeiro intervalo 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. Defina a aparência do intervalo 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. Execute outra pesquisa.

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

O exemplo a seguir mostra o método complete.

Exemplo

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); 
    }
}

Consulte também

Tarefas

Como: Aplicar estilos a intervalos em pastas de trabalho

Como: Consulte intervalos de planilha no código

Conceitos

Trabalhando com intervalos

Parâmetros opcionais em soluções do Office