Freigeben über


Gewusst wie: Suchen nach Text in Arbeitsblattbereichen

Mit der Find-Methode des Microsoft.Office.Interop.Excel.Range-Objekts können Sie innerhalb des Bereichs nach Text suchen. Dieser Text kann auch aus einer der Fehlerzeichenfolgen bestehen, die in Arbeitsblattzellen wie #NULL! oder #VALUE! enthalten sind. Weitere Informationen über Fehlerzeichenfolgen finden Sie unter Zellenfehlerwerte.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Excel 2007 und Excel 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Im folgenden Beispiel wird ein Bereich mit dem Namen Fruits durchsucht und die Schriftart der Zellen geändert, die das Wort "apples" enthalten. Diese Prozedur verwendet auch die FindNext-Methode, die bei Wiederholung einer Suche die zuvor festgelegten Sucheinstellungen verwendet. Sie geben die Zelle an, nach der gesucht werden soll, und die FindNext-Methode übernimmt den Rest.

Tipp

Die FindNext-Methode wird am Bereichsanfang erneut gestartet, wenn beim Suchvorgang das Bereichsende erreicht wurde. Der Code muss jedoch verhindern, dass die Suche in einer Endlosschleife ausgeführt wird. Dies können Sie, wie in der folgenden Beispielprozedur gezeigt, mithilfe der Address-Eigenschaft erreichen.

Link zu Video Eine entsprechende Videodemo finden Sie im Thema zur Verwendung der Find-Methode in einem Excel-Add-In (möglicherweise in englischer Sprache).

So suchen Sie nach Text in einem Arbeitsblattbereich

  1. Deklarieren Sie Variablen zum Durchsuchen des gesamten Bereichs, des ersten gefundenen Bereichs und des aktuell gefundenen Bereichs.

    Dim currentFind As Excel.Range = Nothing
    Dim firstFind As Excel.Range = Nothing
    
    Excel.Range currentFind = null; 
    Excel.Range firstFind = null; 
    
  2. Suchen Sie nach der ersten Übereinstimmung, und legen Sie alle Parameter mit Ausnahme der zu suchenden Zellen fest.

    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. Setzen Sie die Suche fort, solange Übereinstimmungen gefunden werden.

    While Not currentFind Is Nothing
    
    while(currentFind != null) 
    
  4. Vergleichen Sie den ersten gefundenen Bereich (firstFind) mit Nothing. Wenn firstFind keinen Wert enthält, wird der gefundene Bereich (currentFind) durch den Code gespeichert.

    If firstFind Is Nothing Then
        firstFind = currentFind
    
    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Beenden Sie die Schleife im Code, wenn die Adresse des gefundenen Bereichs mit der Adresse des zuerst gefundenen Bereichs übereinstimmt.

    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. Legen Sie die Darstellung des gefundenen Bereichs fest.

    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. Führen Sie eine weitere Suche aus.

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

Im folgenden Beispiel wird die vollständige Methode gezeigt.

Beispiel

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

Siehe auch

Aufgaben

Gewusst wie: Anwenden von Formaten für Bereiche in Arbeitsmappen

Gewusst wie: Verweisen auf Arbeitsblattbereiche im Code

Konzepte

Arbeiten mit Bereichen

Optionale Parameter in Office-Lösungen