VBA Buscar siguiente

Excel VBA Buscar siguiente

Como en Excel, cuando presionamos CTRL + F, aparece un cuadro de asistente que nos permite buscar un valor en la hoja de trabajo dada y una vez que se encuentra el valor, hacemos clic en buscar a continuación para encontrar el otro valor similar, ya que es una función de la hoja de trabajo que también puede usarlo en VBA como método de propiedad de la aplicación como application.findnext para los mismos fines.

Encontrar el valor específico en el rango mencionado está bien, pero ¿qué pasa si el requisito es encontrar el valor con múltiples ocurrencias? En uno de los artículos anteriores, hemos discutido el método "Buscar" en VBA y no es complejo en absoluto, pero encontrar todas las ocurrencias repetitivas solo es posible con el método "Buscar siguiente" en Excel VBA.

En este artículo, le mostraremos cómo usar este "Buscar siguiente" en Excel VBA.

¿Qué es Buscar siguiente en Excel VBA?

Como dice la palabra "Buscar siguiente" significa que desde la celda encontrada seguir buscando el siguiente valor hasta que regrese a la celda original donde comenzamos la búsqueda.

Esta es la versión avanzada del método “Buscar” que busca solo una vez el valor mencionado en el rango mencionado.

A continuación se muestra la sintaxis del método FIND NEXT en Excel VBA.

Después: Es la palabra que estamos buscando.

Ejemplos del método Find Next en Excel VBA

A continuación se muestran los ejemplos del método find next en excel VBA.

Por ejemplo, mire los datos a continuación.

Puede descargar esta plantilla de Excel de VBA Find Next aquí - VBA Find Next Excel Template

Paso # 1 - En estos datos, necesitamos encontrar el nombre de la ciudad "Bangalore". Comencemos el subprocedimiento en el editor visual básico.

Código:

 Sub RangeNext_Example () End Sub 

Paso # 2 - Primero, declare la variable como objeto "Rango".

Código:

 Sub RangeNext_Example () Dim Rng As Range End Sub 

Paso # 3 - Establezca la referencia para la variable de objeto como "Rango (" A2: A11 ").

Código:

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

Dado que nuestros datos de la lista de ciudades están en el rango de celdas de A2 a A11 en este rango, solo vamos a buscar la ciudad “Bangalore”.

Dado que establecemos la referencia de rango a la variable "Rng", usamos esta variable en lugar de usar RANGE ("A2: A11") cada vez.

Paso # 4: use la variable RNG y abra el método Find.

Código:

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

Paso # 5 - El primer argumento del método FIND es "Qué", es decir, lo que estamos tratando de buscar en el rango mencionado, por lo que el valor que estamos buscando es "Bangalore".

Código:

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

Paso # 6 - Para mostrar en qué celda hemos encontrado este valor, declare una variable más como una cadena.

Código:

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

Paso # 7: para esta variable, asigne la dirección de celda encontrada.

Código:

 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 porque RNG tendrá la referencia para la celda de valor encontrado.

Paso # 8 - Ahora muestre el resultado de la variable de dirección de celda asignada en el cuadro de mensaje en 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 

Paso # 9 - Ejecute el código y vea lo que obtenemos aquí.

Así que hemos encontrado el valor "Bangalore" en la celda A5. Con el método Find, podemos encontrar solo una celda, por lo que en lugar de FIND necesitamos usar FIND NEXT en Excel VBA.

Paso # 10 - Necesitamos hacer referencia a la variable de objeto de rango pero usando el método FIND NEXT en Excel VBA.

Código:

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

Como puede ver arriba, hemos usado el método VBA FIND NEXT pero dentro de la función, hemos usado un nombre de variable de objeto de rango.

Paso # 11 - Ahora asigne nuevamente la dirección de la celda y muestre la dirección en el cuadro de mensaje.

Código:

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

Paso # 12 - Ejecute la macro y vea lo que obtenemos en el primer cuadro de mensaje.

Paso # 13 - El primer cuadro de mensaje muestra el valor "Bangalore" que se encuentra en la celda A5, haga clic en el botón Aceptar para ver el siguiente valor encontrado.

El segundo valor encontrado en la celda A7, presione Ok para continuar.

VBA Buscar siguiente (mediante bucle)

Saldrá del subprocedimiento de VBA, pero somos uno más que se encuentra en la celda A10. Cuando los valores se encuentran en más de una celda, es mejor usar bucles.

En este caso, también tenemos el valor "Bangalore" en más de una celda, por lo que necesitamos incluir bucles aquí.

Paso # 14 - Primero, declare dos variables como el rango.

Código:

 Sub RangeNext_Example1 () Dim Rng como rango Dim FindRng como rango End Sub 

Paso # 15: establezca la referencia para la primera variable como se muestra a continuación.

Código:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Establecer Rng = Rango ("A2: A11"). Buscar (Qué: = "Bangalore") Fin 

Paso # 16 - Para la segunda variable, establezca la referencia usando la función FIND VBA.

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Establecer Rng = Rango ("A2: A11"). Find (What: = "Bangalore") Establecer 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.