VBA VIND VOLGENDE - Hoe de functie FindNext in Excel VBA te gebruiken?

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 complex, maar het vinden van alle repetitieve 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, betekent "Volgende zoeken" dat u vanuit de gevonden cel blijft 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 het vinden van de volgende methode in Excel VBA.

Bekijk bijvoorbeeld de onderstaande gegevens.

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

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 zich in het celbereik van A2 tot A11 in dit bereik bevinden, gaan alleen we zoeken naar de stad "Bangalore".

Omdat we de bereikreferentie instellen op de variabele "Rng", 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. Adres 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

Step#9 - Run the code and see what we get here.

So we have found the value “Bangalore” in the cell A5. With the Find method, we can find only one cell, so instead of FIND, we need to use FIND NEXT in excel VBA.

Step#10 - We need to reference the range object variable but by using the FIND NEXT method 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 = Range("A2:A12").FindNext(Rng) End Sub

As you can see above, we have used the VBA FIND NEXT method, but inside the function, we have used a range object variable name.

Step#11 - Now again, assign the cell address and show the address in the message box.

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 terwijl FirstCell FindRng.Address MsgBox "Zoeken is voorbij" End Sub

Stap # 21 - Dit zal alle overeenkomende celadressen blijven tonen, en uiteindelijk zal het het bericht tonen als "Zoeken is voorbij" in het nieuwe berichtvenster.

Dingen om te onthouden

  • De methode FIND kan slechts één waarde tegelijk vinden.
  • FIND NEXT in Excel VBA kan de volgende waarde vinden in de reeds gevonden waardecel.
  • Gebruik de Do While-lus om door alle cellen in het bereik te lopen.

Interessante artikelen...