VBA LÖYTÄÄ SEURAAVA | Kuinka käyttää FindNext-toimintoa Excel VBA: ssa?
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 vieressä, koska se on laskentataulukko 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 vaaditaan arvon löytämistä useilla esiintymillä. 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 seuraavan arvon etsimistä, 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 mainitussa 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ä löytää seuraava menetelmä Excel VBA: ssa.
Katso esimerkiksi alla olevia tietoja.
Voit ladata tämän VBA Find Next Excel -mallin täältä - VBA Find Next Excel -malliVaihe # 1 - Näistä tiedoista on löydettävä kaupungin nimi "Bangalore". Aloitetaan alimenettely Visual Basic -editorissa.
Koodi:
Ala-alueSeuraava_esimerkki () Loppuosa
Vaihe # 2 - Ilmoita ensin muuttuja "Range" -objektiksi.
Koodi:
Ala-alueSeuraava_esimerkki () Himmennä alue, joka on alueen loppuosa
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, aiomme etsiä kaupunkia "Bangalore".
Koska asetamme alueviittauksen muuttujalle ”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 “What” eli 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 vielä yksi muuttuja merkkijonona.
Koodi:
Sub RangeNext_Example () Himmennä Rng alueena Himmennä CellAdderess merkkijonona Set Rng = Alue ("A2: A12") Rng.Find What: = "Bangalore" End Sub
Vaihe # 7 - Määritä tälle muuttujalle löydetty solun osoite.
Koodi:
Sub RangeNext_Example () Himmennä Rng alueena Himmennä CellAdderess merkkijonona Aseta Rng = Alue ("A2: A12"). Etsi (Mitä: = "Bangalore") Rng.Find Mitä: = "Bangalore" CellAddress = Rng.Address End SubHuomaa: RNG.osoite, koska RNG: llä on viitearvo 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ä löydämme vain yhden solun, joten Etsitän sijasta meidän on käytettävä EHDÄ SEURAAVAA 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 () Dim Rng as Range Himmennä CellAdderess as String Set Rng = Alue ("A2: A12"). Etsi (Mitä: = "Bangalore") Rng.Find What: = "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 solun osoite uudelleen 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
Vaihe # 12 - Suorita makro ja katso mitä saamme ensimmäisessä viestiruudussa.
Vaihe # 13 - Ensimmäinen viestiruutu näyttää solusta A5 löydetyn arvon “Bangalore”, napsauta OK-painiketta nähdäksesi seuraavan löydetyn arvon.
Toinen arvo löytyy A7-solusta, jatka painamalla Ok.
VBA Etsi seuraava (Loopin avulla)
Se poistuu VBA-alimenetelmästä, mutta olemme vielä yksi löydettävissä solusta A10. Kun arvot löytyvät useammasta kuin yhdestä solusta, on parempi käyttää silmukoita.
Tässäkin tapauksessa meillä on arvo "Bangalore" useammassa kuin yhdessä solussa, joten meidän on sisällytettävä silmukoita tähän.
Vaihe # 14 - Ilmoita ensin kaksi muuttujaa alueeksi.
Koodi:
Osa-alueSeuraava_esimerkki1 () Himmennä alue, kuten alue, himmeä alue, kun alue on loppu, ala
Vaihe # 15 - Aseta viite ensimmäiselle muuttujalle alla olevan kuvan mukaisesti.
Koodi:
Sub RangeNext_Example1 () Himmennä Rng alueena Dim FindRng As Range Set Rng = Alue ("A2: A11"). Etsi (Mitä: = "Bangalore") Lopeta ali
Vaihe # 16 - Aseta toiselle muuttujalle viite käyttämällä ETSI VBA -toimintoa.
Sub RangeNext_Example1 () Dim Rng as Range Dim FindRng As Range Set Rng = Alue ("A2: A11"). Etsi (Mitä: = "Bangalore") Aseta FindRng = Rng.FindNext ("Bangalore") Loppu
Vaihe # 17 - Ennen kuin aloitamme arvon etsimisen, meidän on tunnistettava mistä solusta aloitamme haun, joka ilmoittaa muuttujan merkkijonona.
Koodi:
Sub RangeNext_Example1 () Dim Rng as Range Dim FindRng As Range Set Rng = Alue ("A2: A11"). Etsi (Mitä: = "Bangalore") Aseta FindRng = Rng.FindNext ("Bangalore") Dim FirstCell merkkijonona FirstCell = Rng. Osoitteen loppu
Vaihe # 18 - Määritä tälle muuttujalle ensimmäinen solun osoite.
Koodi:
Sub RangeNext_Example1 () Himmennä Rng alueena Dim FindRng As Range Set Rng = Alue ("A2: A11") Aseta FindRng = Rng.Find (Mitä: = "Bangalore") Hämärtää FirstCell merkkijonona FirstCell = Rng.Osoite End Sub
Vaihe # 19 - Nyt meidän on sisällytettävä "Do While" -silmukka silmukoiden läpi kaikki solut ja löydettävä hakuarvo.
Koodi:
Sub RangeNext_Example1 () Dim Rng as Range Dim FindRng As Range Set Rng = Alue ("A2: A11"). Etsi (Mitä: = "Bangalore") Aseta FindRng = Rng.FindNext ("Bangalore") Dim FirstCell merkkijonona FirstCell = Rng.osoite Tee silmukka kun FirstCell Cell.Address End Sub
Silmukan sisällä mainitaan sanomaruutu ja VBA ETSI SEURAAVA -menetelmä.
Vaihe # 20 - Alla on täydellinen koodi sinulle.
Koodi:
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ää jatkuvasti kaikki vastaavat solun osoitteet 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.