VBA Hitta nästa

Excel VBA Hitta nästa

Som i excel när vi trycker på CTRL + F dyker en guiden upp som låter oss söka efter ett värde i det angivna kalkylbladet och när värdet hittats klickar vi på hitta bredvid för att hitta det andra liknande värdet, eftersom det är en kalkylfunktion kan också använda den i VBA som Application-egenskapsmetod som application.findnext för samma ändamål.

Att hitta det specifika värdet i det nämnda intervallet är bra, men tänk om kravet är att hitta värdet med flera förekomster. I en av de tidigare artiklarna har vi diskuterat "Hitta" -metoden i VBA och den är inte komplicerad alls men att hitta alla repetitiva händelser är endast möjlig med "Hitta nästa" -metoden i excel VBA.

I den här artikeln visar vi dig hur du använder den här "Hitta nästa" i Excel VBA.

Vad är Hitta nästa i Excel VBA?

Som ordet säger "Sök nästa" betyder att från den hittade cellen fortsätter du att söka efter nästa värde tills du återgår till den ursprungliga cellen där vi har startat sökningen.

Detta är den avancerade versionen av "Hitta" -metoden som bara söker en gång det nämnda värdet i det nämnda intervallet.

Nedan visas syntaxen för HITTA NÄSTA-metoden i Excel VBA.

Efter: Det är ordet som vi letar efter.

Exempel på Hitta nästa metod i Excel VBA

Nedan finns exempel på hitta nästa metod i excel VBA.

Titta till exempel på nedanstående data.

Du kan ladda ner denna VBA Hitta nästa Excel-mall här - VBA Hitta nästa Excel-mall

Steg 1 - I den här informationen måste vi hitta stadsnamnet "Bangalore". Låt oss starta delproceduren i den visuella grundredigeraren.

Koda:

 Sub RangeNext_Example () End Sub 

Steg 2 - Först, förklara variabeln som "Range" -objekt.

Koda:

 Sub RangeNext_Example () Dim Rng Som Range End Sub 

Steg 3 - Ställ in referensen för objektvariabeln som "Range (" A2: A11 ").

Koda:

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

Eftersom våra uppgifter om stadslistan finns där i cellernas intervall från A2 till A11 i detta intervall ska vi bara söka efter staden ”Bangalore”.

Eftersom vi ställer in områdesreferensen till variabeln "Rng" använder vi denna variabel istället för att använda RANGE ("A2: A11") varje gång.

Steg 4 - Använd RNG-variabeln och öppna sökmetoden.

Koda:

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

Steg # 5 - Det första argumentet för FIND-metoden är "Vad" dvs vad vi försöker söka i det nämnda intervallet, så värdet vi söker är "Bangalore".

Koda:

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

Steg # 6 - För att visa i vilken cell vi har hittat det här värdet, förklara en variabel till som en sträng.

Koda:

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

Steg # 7 - För den här variabeln tilldela den hittade celladressen.

Koda:

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

Obs: RNG.Address eftersom RNG kommer att ha referensen för det hittade värdecellen.

Steg # 8 - Visa nu det tilldelade resultatet för celladressvariabel i meddelandefältet i 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 

Steg 9 - Kör koden och se vad vi får här.

Så vi har hittat värdet "Bangalore" i cellen A5. Med Find-metoden kan vi bara hitta en cell så istället för HITTA behöver vi HITTA NÄSTA i excel VBA.

Steg # 10 - Vi måste referera till områdesobjektvariabeln men genom att använda HITTA NÄSTA-metoden i excel VBA.

Koda:

 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 

Som du kan se ovan har vi använt VBA FINN NEXT-metoden men inuti funktionen har vi använt ett variabelt namn för intervallobjekt.

Steg # 11 - Tilldela nu igen celladressen och visa adressen i meddelandefältet.

Koda:

 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 

Steg # 12 - Kör makrot och se vad vi får i den första meddelanderutan.

Steg # 13 - Den första meddelandefältet visar värdet "Bangalore" som finns i cellen A5, klicka på Ok-knappen för att se nästa hittade värde.

Det andra värdet som finns i A7-cellen, tryck på OK för att fortsätta.

VBA Hitta nästa (med loop)

Det kommer att lämna VBA-delproceduren men vi finns ytterligare en i cell A10. När värdena finns i mer än en cell är det bättre att använda slingor.

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.