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
Deklarujte proměnné pro sledování celé oblasti, první nalezené oblasti a aktuální nalezené oblasti.
Vyhledejte první shodu a zadejte všechny parametry s výjimkou buňky, po které se mají hledat.
Pokračujte v hledání, dokud budou nalezeny shody.
Porovnejte první nalezenou oblast (
firstFind
) s nic. PokudfirstFind
neobsahuje žádnou hodnotu, uloží kód nalezenou oblast (currentFind
).Ukončete smyčku, pokud adresa nalezeného rozsahu odpovídá adrese prvního nalezeného rozsahu.
Nastavte vzhled nalezené oblasti.
Proveďte jiné hledání.
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);
}
}