Udostępnij za pośrednictwem


Programowe wyszukiwanie tekstu w zakresach arkuszy

Find Metoda Range obiektu umożliwia wyszukiwanie tekstu w zakresie. Ten tekst może być również dowolnymi ciągami błędów, które mogą pojawić się w komórce arkusza, takiej jak #NULL! lub #VALUE!. Aby uzyskać więcej informacji na temat ciągów błędów, zobacz Wartości błędów komórek.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Excel. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Poniższy przykład wyszukuje zakres o nazwie Fruits i modyfikuje czcionkę dla komórek zawierających wyraz "apples". Ta procedura używa FindNext również metody , która używa poprzednio ustawionych ustawień wyszukiwania, aby powtórzyć wyszukiwanie. Należy określić komórkę, po której ma być wyszukiwana, a FindNext metoda obsługuje resztę.

Uwaga

FindNext Wyszukiwanie metody opakowuje się z powrotem na początku zakresu wyszukiwania po osiągnięciu końca zakresu. Kod musi upewnić się, że wyszukiwanie nie owija się w nieskończonej pętli. Przykładowa procedura przedstawia jeden ze sposobów obsługi tej metody przy użyciu Address[] właściwości .

Aby wyszukać tekst w zakresie arkusza

  1. Zadeklaruj zmienne do śledzenia całego zakresu, pierwszego znalezionego zakresu i bieżącego znalezionego zakresu.

    Excel.Range currentFind = null; 
    Excel.Range firstFind = null;
    
  2. Wyszukaj pierwsze dopasowanie, określając wszystkie parametry z wyjątkiem komórki do wyszukania.

    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing);
    
  3. Kontynuuj wyszukiwanie tak długo, jak istnieją dopasowania.

    while(currentFind != null)
    
  4. Porównaj pierwszy znaleziony zakres (firstFind) z wartością Nic. Jeśli firstFind nie zawiera żadnej wartości, kod przechowuje znaleziony zakres (currentFind).

    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Zakończ pętlę, jeśli adres znalezionego zakresu jest zgodny z adresem pierwszego znalezionego zakresu.

    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
    {
        break;
    }
    
  6. Ustaw wygląd znalezionego zakresu.

    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true;
    
  7. Wykonaj inne wyszukiwanie.

    currentFind = Fruits.FindNext(currentFind);
    

    Poniższy przykład przedstawia kompletną metodę.

Przykład

    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(Excel.XlReferenceStyle.xlA1)
                  == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
            {
                break;
            }

            currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
            currentFind.Font.Bold = true; 

            currentFind = Fruits.FindNext(currentFind); 
        }
    }