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 Template

Krok 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 Sub 

Pozná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.

$config[zx-auto] not found$config[zx-overlay] not found