VBA ZISTI ĎALŠIE Ako používať funkciu FindNext v programe Excel VBA?

Excel VBA Nájsť ďalšie

Rovnako ako v programe Excel, keď stlačíme kombináciu klávesov CTRL + F, objaví sa sprievodcovské okno, ktoré nám umožní vyhľadať hodnotu v danom pracovnom hárku a akonáhle hodnotu nájdeme, klikneme na nájsť vedľa a nájdeme ďalšiu podobnú hodnotu, pretože ide o funkciu pracovného hárka, ktorú ho môžete na rovnaké účely použiť aj vo VBA ako metódu vlastnosti Application ako application.findnext.

Nájdenie konkrétnej hodnoty v uvedenom rozsahu je v poriadku, ale čo ak je požiadavkou vyhľadanie hodnoty s viacerými výskytmi. V jednom z predchádzajúcich článkov sme sa zaoberali metódou „Nájsť“ vo VBA a nie je to vôbec zložité, ale nájdenie všetkých opakujúcich sa výskytov je možné iba pomocou metódy „Nájsť ďalšie“ v programe Excel VBA.

V tomto článku si ukážeme, ako používať toto „Nájsť ďalšie“ v programe Excel VBA.

Čo je Nájsť ďalej v programe Excel VBA?

Ako hovorí slovo, „Nájsť ďalšie“ znamená, že od nájdenej bunky pokračujte v hľadaní ďalšej hodnoty, kým sa nevrátite späť do pôvodnej bunky, v ktorej sme zahájili vyhľadávanie.

Toto je pokročilá verzia metódy „Nájsť“, ktorá vyhľadáva iba jednu uvedenú hodnotu v uvedenom rozsahu.

Nižšie je uvedená syntax metódy FIND NEXT v programe Excel VBA.

Potom: Je to slovo, ktoré hľadáme.

Príklady metódy Nájsť ďalšiu v programe Excel VBA

Nižšie uvádzame príklady nájdenia ďalšej metódy v programe Excel VBA.

Napríklad si pozrite nasledujúce údaje.

Krok 1 - V týchto údajoch musíme nájsť názov mesta „Bangalore“. Začnime podproces v základnom vizuálnom editore.

Kód:

Sub RangeNext_Example () End Sub

Krok 2 - Najskôr deklarujte premennú ako objekt „Range“.

Kód:

Sub RangeNext_Example () Dim Rng ako Range End Sub

Krok 3 - Nastavte odkaz na premennú objektu ako „Rozsah („ A2: A11 “).

Kód:

Sub RangeNext_Example () Dim Rng As Range Set Rng = Range ("A2: A12") End Sub

Pretože sú naše údaje zo zoznamu miest v rozsahu buniek od A2 do A11 v tomto rozmedzí, iba my vyhľadáme mesto „Bangalore“.

Pretože sme nastavili odkaz na rozsah pre premennú „Rng“, použijeme túto premennú namiesto toho, aby sme zakaždým používali RANGE („A2: A11“).

Krok 4 - Použite premennú RNG a otvorte metódu Nájsť.

Kód:

Sub RangeNext_Example () Dim Rng As Set Set Rng = Range ("A2: A12") Rng.Find End Sub

Krok č. 5 - Prvý argument metódy FIND je „Čo“, tj. Čo sa pokúšame vyhľadať v uvedenom rozsahu, takže hľadaná 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 - Ak chcete ukázať, v ktorej bunke sme našli túto hodnotu, deklarujte ako premennú ešte jednu premennú.

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 - K tejto premennej priraďte nájdenú adresu bunky.

Kód:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Nájsť (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address End Sub
Poznámka: RNG. Adresa, pretože RNG bude mať referenciu pre nájdenú hodnotu bunky.

Krok 8 - Teraz ukážte výsledok priradenej premennej adresy bunky v okne správy vo VBA.

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Nájsť (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Sub

Krok 9 - Spustite kód a uvidíte, čo tu dostaneme.

V bunke A5 sme teda našli hodnotu „Bangalore“. S metódou Find nájdeme iba jednu bunku, takže namiesto FIND musíme v Exceli VBA použiť FIND NEXT.

Krok 10 - Musíme odkazovať na premennú objektu rozsahu, ale pomocou metódy FIND NEXT v programe 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

Ako vidíte vyššie, použili sme metódu VBA FIND NEXT, ale vo vnútri funkcie sme použili názov premennej objektu rozsahu.

Krok 11 - Teraz znova priraďte adresu bunky a zobrazte adresu v okne správy.

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 MsgBox FindRng.Address Set FindRng = Rng.FindNext (FindRng) Loop While FirstCell FindRng.Address MsgBox "Hľadanie skončilo" End Sub

Krok 21 - Týmto sa budú stále zobrazovať všetky zodpovedajúce adresy buniek a nakoniec sa v novom okne so správou zobrazí správa „Vyhľadávanie skončilo“.

Na čo treba pamätať

  • Metóda FIND dokáže nájsť naraz iba jednu hodnotu.
  • NÁJDETE ĎALŠIE v programe Excel VBA môže nájsť ďalšiu hodnotu z už nájdenej bunky s hodnotou.
  • Pomocou slučky Do While môžete prechádzať cez všetky bunky v rozsahu.

Zaujímavé články...