VBA TROBA SEGÜENT | Com s'utilitza la funció FindNext a Excel VBA?

Excel VBA Cerca següent

Com a Excel quan premem CTRL + F, apareix un quadre d’assistent que ens permet cercar un valor al full de treball donat i, un cop trobat el valor, fem clic a Cerca al costat per trobar l’altre valor similar, ja que és una característica del full de treball. també es pot utilitzar a VBA com a mètode de propietat de l'aplicació com application.findnext amb els mateixos propòsits.

Trobar el valor específic en l’interval esmentat està bé, però què passa si el requisit és trobar el valor amb diverses ocurrències. En un dels articles anteriors, hem parlat del mètode "Trobar" a VBA i no és gens complex, però trobar totes les ocurrències repetitives només és possible amb el mètode "Trobar següent" a Excel VBA.

En aquest article, us mostrarem com utilitzar aquest "Cerca següent" a Excel VBA.

Què és Find Next a Excel VBA?

Com diu la paraula "Cerca següent" significa que des de la cel·la trobada seguiu cercant el següent valor fins que torneu a la cel·la original on hem iniciat la cerca.

Aquesta és la versió avançada del mètode "Cerca" que cerca només una vegada el valor esmentat a l'interval esmentat.

A continuació es mostra la sintaxi del mètode FIND NEXT a Excel VBA.

Després: És la paraula que estem buscant.

Exemples del mètode Cerca següent a Excel VBA

A continuació es mostren els exemples del mètode de cerca següent a Excel VBA.

Per exemple, mireu les dades següents.

Podeu descarregar aquesta plantilla Excel VBA Find Next aquí - VBA Find Next Template Excel

Pas 1 - En aquestes dades, hem de trobar el nom de la ciutat "Bangalore". Comencem el subprocés a l'editor visual bàsic.

Codi:

 Sub RangeNext_Example () Final Sub 

Pas 2: En primer lloc, declareu la variable com a objecte "Range".

Codi:

 Sub RangeNext_Example () Dim Rng As Range End Sub 

Pas 3: Definiu la referència de la variable d'objecte com a "Interval (" A2: A11 ").

Codi:

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

Com que les nostres dades de la llista de ciutats es troben en el rang de cel·les de A2 a A11 en aquest interval només anem a buscar la ciutat "Bangalore".

Com que establim la referència de l'interval a la variable "Rng", fem servir aquesta variable en lloc d'utilitzar RANGE ("A2: A11") cada vegada.

Pas 4: Utilitzeu la variable RNG i obriu el mètode Find.

Codi:

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

Pas 5: El primer argument del mètode FIND és "Què", és a dir, el que intentem cercar en l'interval esmentat, de manera que el valor que cerquem és "Bangalore".

Codi:

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

Pas 6: Per mostrar en quina cel·la hem trobat aquest valor, declarem una variable més com una cadena.

Codi:

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

Pas 7: Per a aquesta variable assigneu l'adreça de cel·la trobada.

Codi:

 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 

Nota: RNG.Address perquè RNG tindrà la referència per a la cel·la de valor trobada.

Pas 8: Ara mostreu el resultat de la variable d’adreça de cel·la assignada al quadre de missatges de 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 Endreça de cel·la Sub 

Pas 9: Executeu el codi i vegeu què obtenim aquí.

Per tant, hem trobat el valor "Bangalore" a la cel·la A5. Amb el mètode Find, només podem trobar una cel·la, de manera que en lloc de FIND hem d’utilitzar FIND NEXT a excel VBA.

Pas 10: Hem de fer referència a la variable d’objecte d’interval, però mitjançant el mètode FIND NEXT a excel VBA.

Codi:

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

Com podeu veure més amunt, hem utilitzat el mètode VBA FIND NEXT, però dins de la funció hem utilitzat un nom de variable d’objecte d’interval.

Pas 11: Ara torneu a assignar l'adreça de la cel·la i mostreu-la al quadre de missatge.

Codi:

 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 

Pas 12: Executeu la macro i vegeu què obtenim al primer quadre de missatges.

Pas # 13 - El primer quadre de missatge mostra el valor "Bangalore" que es troba a la cel·la A5; feu clic al botó Ok per veure el següent valor trobat.

El segon valor que es troba a la cel·la A7, premeu Ok per continuar.

VBA Cerca següent (mitjançant Loop)

Sortirà del subprocediment VBA, però en som un més a la cel·la A10. Quan els valors es troben en més d'una cel·la, és millor utilitzar bucles.

En aquest cas, també tenim valor "Bangalore" en més d'una cel·la, de manera que hem d'incloure bucles aquí.

Pas 14 En primer lloc, declareu dues variables com a rang.

Codi:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range End Sub 

Pas 15: Definiu la referència per a la primera variable com es mostra a continuació.

Codi:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") End Sub 

Pas 16 Per a la segona variable, configureu la referència mitjançant la funció FIND VBA.

 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 

Pas # 17 - Abans de començar a cercar el valor, hem d’identificar des de quina cel·la estem iniciant la cerca, ja que la variable es declara com una cadena.

Codi:

 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 

Pas 18 Per a aquesta variable assigneu la primera adreça de cel·la.

Codi:

 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 

Pas # 19 - Ara hem d'incloure el bucle "Feu-ho mentre que" per fer un bucle a través de totes les cel·les i trobar el valor de cerca.

Codi:

 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 

Dins del bucle mencioneu el quadre de missatges i el mètode VBA FIND NEXT.

Pas 20 A continuació es mostra el codi complet per a vostè.

Codi:

 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 Feu MsgBox FindRng.Address Establir FindRng = Rng.FindNext (FindRng) bucle mentre FirstCell FindRng.Address MsgBox "La cerca ha finalitzat" End Sub 

Pas 21 Això continuarà mostrant totes les adreces de cel·la coincidents i, al final, mostrarà el missatge com a "S'ha acabat la cerca" al quadre de missatges nou.

Coses que cal recordar

  • El mètode FIND només pot trobar un valor a la vegada.
  • FIND NEXT a Excel VBA pot trobar el següent valor de la cel·la de valor ja trobada.
  • Utilitzeu el bucle Do While per recórrer totes les cel·les de l'interval.