VBA Volgende zoeken

Excel VBA Volgende zoeken

Zoals in Excel wanneer we op CTRL + F drukken, verschijnt er een wizardvenster waarmee we een waarde in het gegeven werkblad kunnen zoeken en zodra de waarde is gevonden, klikken we op zoeken naast om de andere vergelijkbare waarde te vinden, omdat het een werkbladfunctie is die we kan het ook in VBA gebruiken als Application property-methode als application.findnext voor dezelfde doeleinden.

Het vinden van de specifieke waarde in het genoemde bereik is prima, maar wat als de vereiste is om de waarde meerdere keren te vinden? In een van de eerdere artikelen hebben we de "Find" -methode in VBA besproken en deze is helemaal niet ingewikkeld, maar het vinden van alle herhalende gebeurtenissen is alleen mogelijk met de "Find Next" -methode in Excel VBA.

In dit artikel laten we u zien hoe u deze "Volgende zoeken" in Excel VBA kunt gebruiken.

Wat is Volgende zoeken in Excel VBA?

Zoals het woord zegt "Volgende zoeken" betekent vanuit de gevonden cel blijven zoeken naar de volgende waarde totdat u terugkeert naar de oorspronkelijke cel waar we begonnen zijn met zoeken.

Dit is de geavanceerde versie van de “Find” -methode die slechts één keer de genoemde waarde in het genoemde bereik zoekt.

Hieronder staat de syntaxis van de FIND NEXT-methode in Excel VBA.

Na: het is het woord waarnaar we op zoek zijn.

Voorbeelden van Find Next Method in Excel VBA

Hieronder staan ​​de voorbeelden van de volgende methode in Excel VBA.

Bekijk bijvoorbeeld de onderstaande gegevens.

U kunt deze VBA Find Next Excel-sjabloon hier downloaden - VBA Find Next Excel-sjabloon

Stap # 1 - In deze gegevens moeten we de plaatsnaam "Bangalore" vinden. Laten we de subprocedure starten in de visuele basiseditor.

Code:

 Sub RangeNext_Example () End Sub 

Stap # 2 - Declareer eerst de variabele als "Range" -object.

Code:

 Sub RangeNext_Example () Dim Rng As Range End Sub 

Stap # 3 - Stel de referentie voor de objectvariabele in als "Bereik (" A2: A11 ").

Code:

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

Aangezien onze gegevens van de stedenlijst er zijn in het celbereik van A2 tot A11 in dit bereik, gaan we alleen zoeken naar de stad "Bangalore".

Aangezien we de bereikverwijzing naar de variabele "Rng" hebben ingesteld, gebruiken we deze variabele in plaats van elke keer RANGE ("A2: A11").

Stap # 4 - Gebruik de RNG-variabele en open de zoekmethode.

Code:

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

Stap # 5 - Het eerste argument van de FIND-methode is "Wat", dwz wat we proberen te zoeken in het genoemde bereik, dus de waarde die we zoeken is "Bangalore".

Code:

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

Stap # 6 - Om te laten zien in welke cel we deze waarde hebben gevonden, declareer nog een variabele als een string.

Code:

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

Stap # 7 - Wijs voor deze variabele het gevonden celadres toe.

Code:

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

Opmerking: RNG.Address omdat RNG de referentie heeft voor de cel met gevonden waarde.

Stap # 8 - Toon nu het toegewezen celadresvariabele resultaat in het berichtvenster in 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 

Stap # 9 - Voer de code uit en kijk wat we hier krijgen.

We hebben dus de waarde "Bangalore" gevonden in de cel A5. Met de Find-methode kunnen we slechts één cel vinden, dus in plaats van FIND moeten we FIND NEXT gebruiken in Excel VBA.

Stap # 10 - We moeten verwijzen naar de bereikobjectvariabele, maar door de FIND NEXT-methode te gebruiken in Excel VBA.

Code:

 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 = Bereik ("A2: A12"). FindNext (Rng) End Sub 

Zoals je hierboven kunt zien, hebben we de VBA FIND NEXT-methode gebruikt, maar binnen de functie hebben we een bereikobjectvariabelenaam gebruikt.

Stap # 11 - Wijs nu opnieuw het celadres toe en toon het adres in het berichtvenster.

Code:

 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 "Search is over" End Sub 

Step#21 – This will keep showing all the matching cell address and in the end, it will show the message as “Search is Over” in the new message box.

Things to Remember

  • FIND method can find only one value at a time.
  • FIND NEXT in excel VBA can find the next value from the already found value cell.
  • Use Do While loop to loop through all the cells in the range.