VBA LÖYTÄÄ SEURAAVA - Kuinka käyttää FindNext-toimintoa Excel VBA: ssa?

Sisällysluettelo

Excel VBA Etsi seuraava

Kuten Excelissä, kun painamme CTRL + F, avautuu ohjattu ruutu, jonka avulla voimme etsiä arvoa annetusta laskentataulukosta ja kun arvo on löydetty, löydämme toisen vastaavan arvon napsauttamalla etsi-painiketta, koska se on laskentataulukko-ominaisuus voi käyttää sitä myös VBA: ssa Application-ominaisuusmenetelmänä kuten application.findnext samoihin tarkoituksiin.

Tietyn arvon löytäminen mainituilta alueilta on hieno, mutta entä jos vaatimuksen on löytää arvo, jolla on useita esiintymiä. Yhdessä aikaisemmista artikkeleista olemme keskustelleet VBA: n "Find" -menetelmästä, ja se ei ole lainkaan monimutkainen, mutta kaikkien toistuvien esiintymien löytäminen on mahdollista vain excel VBA: n "Find Next" -menetelmällä.

Tässä artikkelissa näytämme, kuinka tätä “Etsi seuraava” -ohjelmaa käytetään Excel VBA: ssa.

Mikä on Etsi seuraava Excel VBA: ssa?

Kuten sana sanoo, "Etsi seuraava" tarkoittaa löydetystä solusta jatka seuraavaa arvoa, kunnes palaa takaisin alkuperäiseen soluun, jossa olemme aloittaneet haun.

Tämä on "Find" -menetelmän edistynyt versio, joka hakee vain yhden kerran mainittua arvoa mainitulla alueella.

Alla on FIND NEXT -menetelmän syntaksi Excel VBA: ssa.

Jälkeen: Se on sana, jota etsimme.

Esimerkkejä Etsi seuraava menetelmä -toiminnosta Excel VBA: ssa

Alla on esimerkkejä seuraavan menetelmän löytämisestä Excel VBA: ssa.

Katso esimerkiksi alla olevia tietoja.

Vaihe # 1 - Näistä tiedoista meidän on löydettävä kaupungin nimi "Bangalore". Aloitetaan alimenettely visuaalisen peruseditorin avulla.

Koodi:

Ala-alueSeuraava_esimerkki () Loppuosa

Vaihe # 2 - Ilmoita ensin muuttuja "Range" -objektiksi.

Koodi:

Sub RangeNext_Example () Dim Rng As Range End Sub

Vaihe # 3 - Aseta objektimuuttujan viitteeksi "Alue (" A2: A11 ").

Koodi:

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

Koska tietomme kaupunkiluettelosta ovat solualueella A2: sta A11: een tällä alueella, vain aiomme etsiä kaupunkia "Bangalore".

Koska asetimme alueviitteen muuttujaan "Rng", käytämme tätä muuttujaa sen sijaan, että käytämme RANGE ("A2: A11") joka kerta.

Vaihe # 4 - Käytä RNG-muuttujaa ja avaa Etsi-menetelmä.

Koodi:

Sub RangeNext_Example () Dim Rng As Range Set Rng = Alue ("A2: A12") Rng.Etsi loppu Sub

Vaihe # 5 - FIND-menetelmän ensimmäinen argumentti on "Mitä", ts. Mitä yritämme etsiä mainitulta alueelta, joten etsimämme arvo on "Bangalore".

Koodi:

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

Vaihe # 6 - Jos haluat näyttää, mistä solusta olemme löytäneet tämän arvon, ilmoita yksi muuttuja merkkijonona.

Koodi:

Osa-alueSeuraava_esimerkki () Himmennä Rng alueena Hämärä solunosoittaja merkkijonona Set Rng = Alue ("A2: A12") Rng.Find Mitä: = "Bangalore" Loppu

Vaihe # 7 - Määritä tälle muuttujalle löydetty solun osoite.

Koodi:

Sub RangeNext_Example () Himmennä Rng alueena Hämärä CellAdderess merkkijonona Aseta Rng = Alue ("A2: A12"). Etsi (Mitä: = "Bangalore") Rng.Find Mitä: = "Bangalore" CellAddress = Rng.Address End Sub
Huomaa: RNG. Osoite, koska RNG: llä on viite löydetyn arvon solulle.

Vaihe # 8 - Näytä nyt määritetyn solun osoitemuuttujan tulos VBA: n viestiruudussa.

Sub RangeNext_Example () Dim Rng as Range Himmennä CellAdderess as String Set Rng = Alue ("A2: A12"). Etsi (Mitä: = "Bangalore") Rng.Find Mitä: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Sub

Vaihe # 9 - Suorita koodi ja katso mitä saamme täällä.

Joten olemme löytäneet arvon "Bangalore" solusta A5. Löydä-menetelmällä voimme löytää vain yhden solun, joten Etsitään-sijasta meidän on käytettävä Etsitään seuraavaksi Excel VBA: ssa.

Vaihe # 10 - Meidän on viitattava alueobjektimuuttujaan, mutta käyttämällä FIND NEXT -menetelmää Excel VBA: ssa.

Koodi:

Sub RangeNext_Example () Himmennä Rng alueena Hämärä CellAdderess merkkijonona Set Rng = Alue ("A2: A12"). Etsi (Mitä: = "Bangalore") Rng.Find Mitä: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Alue ("A2: A12"). FindNext (Rng) Loppuosa

Kuten yllä voit nähdä, olemme käyttäneet VBA FIND NEXT -menetelmää, mutta funktion sisällä olemme käyttäneet alueobjektimuuttujan nimeä.

Vaihe # 11 - Määritä nyt taas solun osoite ja näytä osoite viestikentässä.

Koodi:

Sub RangeNext_Example () Himmennä Rng alueena Hämärä CellAdderess merkkijonona Set Rng = Alue ("A2: A12"). Etsi (Mitä: = "Bangalore") Rng.Find Mitä: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Alue ("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

Vaihe # 21 - Tämä näyttää kaikki vastaavat soluosoitteet, ja lopulta se näyttää viestin nimellä "Haku on ohi" uudessa viestiruudussa.

Muistettavaa

  • FIND-menetelmä löytää vain yhden arvon kerrallaan.
  • ETSI SEURAAVA excel VBA: sta voi löytää seuraavan arvon jo löydetystä arvosolusta.
  • Käytä Do While -silmukkaa silmukoiden kaikkien alueen solujen läpi.

Mielenkiintoisia artikkeleita...