Sdílet prostřednictvím


Hledání textu v oblastech listů prostřednictvím kódu programu

Metoda Find objektu Range umožňuje hledat text v rozsahu. Tento text může být také libovolný z chybových řetězců, které se mohou objevit v buňce listu, například #NULL! nebo #VALUE!. Další informace o chybových řetězcích naleznete v tématu Chybové hodnoty buňky.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu a projekty doplňků VSTO pro Excel. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

Následující příklad prohledá oblast pojmenovanou Fruits a upraví písmo buněk, které obsahují slovo "jablka". Tento postup také používá metodu FindNext , která používá dříve nastavená nastavení vyhledávání k opakování hledání. Zadáváte buňku, po které se má hledat, a FindNext metoda zpracovává zbytek.

Poznámka:

Hledání FindNext metody se zabalí zpět na začátek rozsahu hledání po dosažení konce rozsahu. Váš kód musí zajistit, aby hledání neobtéká v nekonečné smyčce. Ukázkový postup ukazuje jeden způsob, jak to zpracovat pomocí Address[] vlastnosti.

Hledání textu v oblasti listu

  1. Deklarujte proměnné pro sledování celé oblasti, první nalezené oblasti a aktuální nalezené oblasti.

    Excel.Range currentFind = null; 
    Excel.Range firstFind = null;
    
  2. Vyhledejte první shodu a zadejte všechny parametry s výjimkou buňky, po které se mají hledat.

    currentFind = Fruits.Find("apples", missing,
        Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, 
        Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
        missing, missing);
    
  3. Pokračujte v hledání, dokud budou nalezeny shody.

    while(currentFind != null)
    
  4. Porovnejte první nalezenou oblast (firstFind) s nic. Pokud firstFind neobsahuje žádnou hodnotu, uloží kód nalezenou oblast (currentFind).

    if (firstFind == null)
    {
        firstFind = currentFind; 
    }
    
  5. Ukončete smyčku, pokud adresa nalezeného rozsahu odpovídá adrese prvního nalezeného rozsahu.

    else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
          == firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
    {
        break;
    }
    
  6. Nastavte vzhled nalezené oblasti.

    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    currentFind.Font.Bold = true;
    
  7. Proveďte jiné hledání.

    currentFind = Fruits.FindNext(currentFind);
    

    Následující příklad ukazuje úplnou metodu.

Příklad

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