Tento článek předvede, jak pomocí VBA najít hodnotu ve sloupci.
Pomocí Range.Find můžeme procházet sloupcem hodnot ve VBA a najít všechny buňky v rozsahu, které odpovídají zadaným kritériím.
Smyčka ve sloupci pomocí Range.Find a Range.FindNext
V níže uvedeném příkladu procházíme daty ve sloupci a hledáme slovo „Po splatnosti“. Když najde slovo, označí buňku změnou barvy textu buňky na červenou. Poté nás metoda Range.FindNext přesune na další buňku a pokračuje v hledání slova a pokračuje ve smyčce až do konce zadaného rozsahu buněk.
1234567891011121314151617 | Dílčí FindLoop ()Dim strFirstAddress jako řetězecDim rngFindValue As RangeDim rngVyhledávat jako rozsahDim rngFind As RangeNastavit rngFind = ActiveSheet.Range ("F1: F17")Nastavit rngSearch = rngFind.Cells (rngFind.Cells.Count)Nastavit rngFindValue = rngFind.Find ("Po splatnosti", rngSearch, xlValues)Pokud není rngFindValue nic, pakstrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedDělatNastavit rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedSmyčka Do rngFindValue.Address = strFirstAddressKonec IfEnd Sub |
Když se kód spustí, uloží adresu první buňky, kde se data nacházejí v proměnné strFirstAddress a změní barvu textu na červenou. Poté se vytvoří smyčka pro vyhledání další buňky, která obsahuje požadovaná data. Když je hodnota nalezena, barva textu se změní na červenou a poté se porovná adresa buňky, kde se hodnota nachází, s řetězcem strFirstAddress. Pokud nejsou stejné, smyčka pokračuje a najde každou instanci slova „Overdue“. Jakmile smyčka dosáhne konce rozsahu buněk (tj. F17), začne zpět na začátku rozsahu (F1) a bude pokračovat ve smyčce. Jakmile dosáhne podruhé adresy buňky F3, protože je stejná jako uložená proměnná strFirstAddress, smyčka se zastaví.