Tento článok ukáže, ako použiť VBA na nájdenie hodnoty v stĺpci.
Môžeme použiť Range.Find na prechádzanie stĺpcom hodnôt vo VBA, aby sme našli všetky bunky v rozsahu, ktoré zodpovedajú zadaným kritériám.
Opakovanie v stĺpci pomocou Range.Find a Range.FindNext
V nižšie uvedenom príklade prechádzame údajmi v stĺpci a hľadáme slovo „Po splatnosti“. Keď nájde slovo, označí bunku zmenou farby textu bunky na červenú. Potom sa pomocou metódy Range.FindNext presunieme do ďalšej bunky a pokračujeme v hľadaní slova a pokračujeme v slučke až do konca určeného rozsahu buniek.
1234567891011121314151617 | Sub FindLoop ()Dim strFirstAddress ako reťazecDim rngFindValue As RangeDim rngHľadať ako rozsahDim rngFind As RangeNastaviť rngFind = ActiveSheet.Range ("F1: F17")Nastaviť rngSearch = rngFind.Cells (rngFind.Cells.Count)Nastaviť rngFindValue = rngFind.Find ("Po splatnosti", rngSearch, xlValues)Ak nie je rngFindValue potom ničstrFirstAddress = rngFindValue.AddressrngFindValue.Font.Color = vbRedUrobNastaviť rngFindValue = rngFind.FindNext (rngFindValue)rngFindValue.Font.Color = vbRedSlučka Do rngFindValue.Address = strFirstAddressKoniec AkKoniec pod |
Po spustení kódu uloží adresu prvej bunky, v ktorej sa údaje nachádzajú v premennej strFirstAddress a zmení farbu textu na červenú. Potom sa vytvorí slučka na nájdenie ďalšej bunky, ktorá obsahuje požadované údaje. Keď je hodnota nájdená, farba textu sa zmení na červenú a potom sa adresa bunky, kde sa hodnota nachádza, porovná s reťazcom strFirstAddress. Ak nie sú rovnaké, slučka pokračuje a nájde každý prípad slova „Po splatnosti“. Akonáhle slučka dosiahne koniec rozsahu buniek (tj. F17), začne sa späť na začiatku rozsahu (F1) a bude pokračovať v slučke. Akonáhle dosiahne druhýkrát adresu bunky F3, pretože je rovnaká ako uložená premenná strFirstAddress, slučka sa zastaví.