Condividi tramite


Procedura: cercare testo negli intervalli dei fogli di lavoro

Il metodo Find dell'oggetto Microsoft.Office.Interop.Excel.Range consente di cercare testo all'interno di un intervallo. Questo testo può rappresentare anche una delle stringhe di errore visualizzate in una cella del foglio di lavoro, ad esempio #NULL! o #VALUE!. Per ulteriori informazioni sulle stringhe di errore, vedere Valori di errori delle celle.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Excel 2007 ed Excel 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

Nell'esempio seguente viene ricercato un intervallo denominato Fruits e viene modificato il tipo di carattere delle celle contenenti la parola "apples". In questa procedura viene utilizzato anche il metodo FindNext, che ripete la ricerca in base alle impostazioni configurate in precedenza. Per applicare il metodo FindNext, è sufficiente specificare la cella dopo la quale effettuare la ricerca.

Nota

Quando viene raggiunta la fine dell'intervallo, la ricerca effettuata dal metodo FindNext riprende dall'inizio dell'intervallo. È necessario assicurarsi che il codice non ripeta la ricerca all'infinito. Nella routine di esempio viene illustrato un metodo per gestire questo problema mediante la proprietà Address.

Collegamento a video Per una dimostrazione video correlata, vedere la procedura dettagliata relativa all'utilizzo del metodo Find in un componente aggiuntivo di Excel.

Per cercare testo in un intervallo di fogli di lavoro

  1. Dichiarare le variabili per tenere traccia dell'intero intervallo, del primo intervallo trovato e dell'intervallo corrente trovato.

    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
  2. Cercare la prima corrispondenza, specificando tutti i parametri tranne la cella dopo la quale effettuare la ricerca.

    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. Continuare la ricerca finché non viene individuata una corrispondenza.

    While Not currentFind Is Nothing
    
    while(currentFind != null) 
    
  4. Confrontare il primo intervallo trovato (firstFind) con Nothing. Se firstFind non contiene alcun valore, il codice consente di memorizzare l'intervallo trovato (currentFind).

    If firstFind Is Nothing Then
        firstFind = currentFind
    
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Se l'indirizzo dell'intervallo trovato corrisponde all'indirizzo del primo intervallo trovato, uscire dal ciclo.

    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. Impostare l'aspetto dell'intervallo trovato.

    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. Effettuare un'altra ricerca.

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

Nell'esempio riportato di seguito viene illustrato il metodo completo.

Esempio

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

Vedere anche

Attività

Procedura: applicare stili agli intervalli nei fogli di lavoro

Procedura: fare riferimento agli intervalli dei fogli di lavoro nel codice

Concetti

Utilizzo degli intervalli

Parametri facoltativi nelle soluzioni Office