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 se jedná o funkci listu, kterou 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 Excelu 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 hledá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 uvedeny příklady hledání další metody v aplikaci Excel VBA.

Podívejte se například na níže uvedená data.

Krok 1 - V těchto datech musíme najít název města „Bangalore“. Začněme podproces v základním vizuálním editoru.

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

Protože naše data ze seznamu měst jsou 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. Adresa, 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

Step#12 - Run the macro and see what we get in the first message box.

Step#13 - The first message box shows the value “Bangalore” found in the cell A5. Click on the Ok button to see the next found value.

The second value found in A7 cell, press Ok to continue.

VBA Find Next (Using Loop)

It will exit the VBA subprocedure, but we are one more to be found in cell A10. When the values are to be found in more than one cell, then it is a better idea to use loops.

In this case, too, we have value “Bangalore” in more than one cell, so we need to include loops here.

Step#14 - First, declare two variables as the range.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range End Sub

Step#15 - Set the reference for the first variable, as shown below.

Code:

Sub RangeNext_Example1() Dim Rng As Range Dim FindRng As Range Set Rng = Range("A2:A11").Find(What:="Bangalore") End Sub

Step#16 - For the second variable, set the reference by using the FIND VBA function.

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

Step#17 - Before we start searching for the value, we need to identify from which cell we are starting the search, for that declares the variable as a string.

Code:

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

Step#18 - For this variable, assign the first cell address.

Code:

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

Step#19 - Now, we need to include the “Do While” loop to loop through all the cells and find the searching value.

Code:

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

Inside the loop, mention the message box and VBA FIND NEXT method.

Step#20 - Below is the complete code for you.

Code:

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 MsgBoxu FindRng.Address Set FindRng = Rng.FindNext (FindRng) Loop While FirstCell FindRng.Address MsgBox "Hledání skončilo" End Sub

Krok # 21 - Tím se budou stále zobrazovat všechny odpovídající adresy buněk a nakonec se v nové zprávě zobrazí zpráva jako „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.

Zajímavé články...