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.
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
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;
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);
Continuare la ricerca finché non viene individuata una corrispondenza.
While Not currentFind Is Nothing
while(currentFind != null)
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; }
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; }
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;
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