VBA NAJÍT DALŠÍ | Jak používat funkci FindNext v aplikaci Excel VBA?
Excel VBA Najít další
Stejně jako v aplikaci Excel, když stiskneme kombinaci kláves CTRL + F, objeví se okno průvodce, které nám umožní vyhledat hodnotu v daném listu a jakmile je hodnota nalezena, klikneme na najít vedle a najdeme další podobnou hodnotu, protože jde o funkci můžete jej také použít ve VBA jako metodu vlastnosti aplikace jako application.findnext pro stejné účely.
Nalezení konkrétní hodnoty v uvedeném rozsahu je v pořádku, ale co když je požadavkem najít hodnotu s více výskyty. V jednom z dřívějších článků jsme diskutovali o metodě „Najít“ ve VBA a není vůbec složitá, ale nalezení všech opakujících se výskytů je možné pouze s metodou „Najít další“ v aplikaci Excel VBA.
V tomto článku vám ukážeme, jak používat toto „Najít další“ v aplikaci Excel VBA.
Co je Najít další v aplikaci Excel VBA?
Slovo říká „Najít další“ znamená, že od nalezené buňky pokračujte v hledání další hodnoty, dokud se nevrátíte zpět do původní buňky, kde jsme zahájili vyhledávání.
Toto je pokročilá verze metody „Najít“, která prohledá pouze jednou uvedenou hodnotu v uvedeném rozsahu.
Níže je uvedena syntaxe metody FIND NEXT v aplikaci Excel VBA.
Poté: Toto slovo hledáme.
Příklady metody Najít další v aplikaci Excel VBA
Níže jsou příklady metody find next v aplikaci Excel VBA.
Podívejte se například na níže uvedená data.
Tuto šablonu VBA Find Next Excel si můžete stáhnout zde - VBA Find Next Excel TemplateKrok 1 - V těchto datech musíme najít název města „Bangalore“. Začněme podproces v editoru jazyka Visual Basic.
Kód:
Sub RangeNext_Example () End Sub
Krok 2 - Nejprve deklarujte proměnnou jako objekt „Range“.
Kód:
Sub RangeNext_Example () Dim Rng jako Range End Sub
Krok 3 - Nastavte odkaz na proměnnou objektu jako „Rozsah („ A2: A11 “).
Kód:
Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") End Sub
Jelikož jsou naše údaje ze seznamu měst v rozsahu buněk od A2 do A11 v tomto rozsahu, budeme hledat pouze město „Bangalore“.
Protože jsme nastavili odkaz na rozsah proměnné „Rng“, použijeme tuto proměnnou namísto použití RANGE („A2: A11“) pokaždé.
Krok # 4 - Použijte proměnnou RNG a otevřete metodu Najít.
Kód:
Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") Rng.Find End Sub
Krok 5 - První argument metody FIND je „Co“, tj. To, co se snažíme hledat ve zmíněném rozsahu, takže hledaná hodnota je „Bangalore“.
Kód:
Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") Rng.Find What: = "Bangalore" End Sub
Krok # 6 - Chcete - li ukázat, ve které buňce jsme našli tuto hodnotu, deklarujte ještě jednu proměnnou jako řetězec.
Kód:
Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12") Rng.Find What: = "Bangalore" End Sub
Krok # 7 - Pro tuto proměnnou přiřaďte nalezenou adresu buňky.
Kód:
Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Najít (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address End SubPoznámka: RNG.Address, protože RNG bude mít odkaz na buňku nalezené hodnoty.
Krok # 8 - Nyní zobrazte výsledek přiřazené proměnné adresy buňky v okně se zprávou ve VBA.
Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Sub
Krok č. 9 - Spusťte kód a podívejte se, co sem dostaneme.
V buňce A5 jsme tedy našli hodnotu „Bangalore“. S metodou Najít můžeme najít pouze jednu buňku, takže místo FIND musíme použít FIND NEXT v Excelu VBA.
Krok # 10 - Musíme odkazovat na proměnnou objektu range, ale pomocí metody FIND NEXT v aplikaci Excel VBA.
Kód:
Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Range ("A2: A12"). FindNext (Rng) End Sub
Jak vidíte výše, použili jsme metodu VBA FIND NEXT, ale uvnitř funkce jsme použili název proměnné objektu rozsahu.
Krok # 11 - Nyní znovu přiřaďte adresu buňky a zobrazte adresu v okně se zprávou.
Kód:
Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Range ("A2: A12"). FindNext (Rng) CellAddress = Rng.Address MsgBox CellAddress End Sub
Krok # 12 - Spusťte makro a podívejte se, co dostaneme, v prvním okně se zprávou.
Krok # 13 - První okno se zprávou zobrazuje hodnotu „Bangalore“ nalezenou v buňce A5, kliknutím na tlačítko Ok zobrazíte další nalezenou hodnotu.
Druhá hodnota nalezená v buňce A7, pokračujte stisknutím tlačítka Ok.
VBA Najít další (pomocí smyčky)
Ukončí podproces VBA, ale my jsme ještě jeden, který se nachází v buňce A10. Pokud mají být hodnoty nalezeny ve více než jedné buňce, je lepší použít smyčky.
I v tomto případě máme hodnotu „Bangalore“ ve více než jedné buňce, takže zde musíme zahrnout smyčky.
Krok # 14 - Nejprve deklarujte dvě proměnné jako rozsah.
Kód:
Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range End Sub
Krok # 15 - Nastavte odkaz na první proměnnou, jak je znázorněno níže.
Kód:
Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") End Sub
Krok # 16 - Pro druhou proměnnou nastavte odkaz pomocí funkce FIND VBA.
Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") Set FindRng = Rng.FindNext ("Bangalore") End Sub
Krok # 17 - Než začneme hledat hodnotu, musíme identifikovat, ze které buňky začneme hledat, protože deklaruje proměnnou jako řetězec.
Kód:
Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") Set FindRng = Rng.FindNext ("Bangalore") Dim FirstCell As String FirstCell = Rng. Adresa End Sub
Krok # 18 - Pro tuto proměnnou přiřaďte první adresu buňky.
Kód:
Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11") Set FindRng = Rng.Find (What: = "Bangalore") Dim FirstCell As String FirstCell = Rng.Address End Sub
Krok č. 19 - Nyní musíme zahrnout smyčku „Do While“, abychom procházeli všemi buňkami a našli hledanou hodnotu.
Kód:
Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") Set FindRng = Rng.FindNext ("Bangalore") Dim FirstCell As String FirstCell = Rng.Address Do Loop While FirstCell Cell.Address End Sub
Uvnitř smyčky uveďte zprávu a metodu VBA FIND NEXT.
Krok # 20 - Níže je uveden kompletní kód.
Kód:
Sub FindNext_Example () Dim FindValue As String FindValue = "Bangalore" Dim Rng As Range Set Rng = Range ("A2: A11") Dim FindRng As Range Set FindRng = Rng.Find (What: = FindValue) Dim FirstCell As String FirstCell = FindRng.Address Do MsgBox FindRng.Address Set FindRng = Rng.FindNext (FindRng) Loop While FirstCell FindRng.Address MsgBox "Hledání skončilo" End Sub
Krok # 21 - Toto bude stále zobrazovat všechny odpovídající adresy buněk a na konci se v novém okně se zprávou zobrazí zpráva „Hledání skončilo“.
Věci k zapamatování
- Metoda FIND může najít pouze jednu hodnotu najednou.
- Najít další v aplikaci Excel VBA může najít další hodnotu z již nalezené buňky hodnot.
- Pomocí smyčky Do While můžete procházet všemi buňkami v rozsahu.