VBA Trova successivo

Excel VBA Trova successivo

Come in Excel, quando premiamo CTRL + F viene visualizzata una finestra della procedura guidata che ci consente di cercare un valore nel foglio di lavoro dato e una volta trovato il valore, facciamo clic su trova accanto per trovare l'altro valore simile, poiché è una funzionalità del foglio di lavoro può anche usarlo in VBA come metodo di proprietà dell'applicazione come application.findnext per gli stessi scopi.

Trovare il valore specifico nell'intervallo menzionato va bene, ma cosa succede se il requisito è trovare il valore con più occorrenze. In uno degli articoli precedenti, abbiamo discusso il metodo "Trova" in VBA e non è affatto complesso, ma trovare tutte le occorrenze ripetitive è possibile solo con il metodo "Trova successivo" in Excel VBA.

In questo articolo, ti mostreremo come utilizzare questo "Trova successivo" in Excel VBA.

Che cos'è Trova successivo in Excel VBA?

Come dice la parola "Trova successivo", dalla cella trovata continuare a cercare il valore successivo fino a quando non si ritorna alla cella originale in cui abbiamo iniziato la ricerca.

Questa è la versione avanzata del metodo "Trova" che cerca solo una volta il valore menzionato nell'intervallo menzionato.

Di seguito è riportata la sintassi del metodo FIND NEXT in Excel VBA.

Dopo: è la parola che stiamo cercando.

Esempi di metodo Trova successivo in Excel VBA

Di seguito sono riportati gli esempi del metodo Trova successivo in Excel VBA.

Ad esempio, guarda i dati seguenti.

Puoi scaricare questo modello VBA Trova successivo Excel qui - VBA Trova modello Excel successivo

Fase # 1 - In questi dati, dobbiamo trovare il nome della città "Bangalore". Iniziamo la sottoprocedura nell'editor di visual basic.

Codice:

 Sub RangeNext_Example () End Sub 

Passo # 2 - Innanzitutto, dichiara la variabile come oggetto "Range".

Codice:

 Sub RangeNext_Example () Dim Rng As Range End Sub 

Step # 3 - Imposta il riferimento per la variabile oggetto come "Range (" A2: A11 ").

Codice:

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

Poiché i nostri dati dell'elenco delle città sono presenti nell'intervallo di celle da A2 a A11 in questo intervallo, solo noi cercheremo la città "Bangalore".

Poiché impostiamo il riferimento di intervallo sulla variabile "Rng", utilizziamo questa variabile invece di utilizzare RANGE ("A2: A11") ogni volta.

Passaggio 4: utilizzare la variabile RNG e aprire il metodo Find.

Codice:

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

Passo # 5 - Il primo argomento del metodo FIND è "Cosa", ovvero cosa stiamo cercando di cercare nell'intervallo indicato, quindi il valore che stiamo cercando è "Bangalore".

Codice:

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

Passaggio # 6 - Per mostrare in quale cella abbiamo trovato questo valore, dichiara un'altra variabile come stringa.

Codice:

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

Passaggio 7: per questa variabile, assegnare l'indirizzo della cella trovato.

Codice:

 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 perché RNG avrà il riferimento per la cella del valore trovato.

Passaggio 8: ora mostra il risultato della variabile dell'indirizzo di cella assegnato nella finestra del messaggio in 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 

Passaggio 9: esegui il codice e guarda cosa otteniamo qui.

Quindi abbiamo trovato il valore "Bangalore" nella cella A5. Con il metodo Find, possiamo trovare solo una cella, quindi invece di FIND dobbiamo usare FIND NEXT in Excel VBA.

Passaggio 10: è necessario fare riferimento alla variabile dell'oggetto intervallo ma utilizzando il metodo FIND NEXT in Excel VBA.

Codice:

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

Come puoi vedere sopra abbiamo usato il metodo VBA FIND NEXT ma all'interno della funzione, abbiamo usato un nome di variabile oggetto di intervallo.

Passaggio 11: ora assegna nuovamente l'indirizzo della cella e mostra l'indirizzo nella finestra del messaggio.

Codice:

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

Passaggio 12: eseguire la macro e vedere cosa si ottiene nella prima finestra di messaggio.

Passaggio # 13 - La prima finestra di messaggio mostra il valore "Bangalore" trovato nella cella A5, fare clic sul pulsante Ok per vedere il valore trovato successivo.

Il secondo valore trovato nella cella A7, premere Ok per continuare.

VBA Trova successivo (utilizzando Loop)

Uscirà dalla sottoprocedura VBA ma ce ne troviamo ancora uno nella cella A10. Quando i valori si trovano in più di una cella, è preferibile utilizzare i loop.

Anche in questo caso abbiamo valore "Bangalore" in più di una cella, quindi dobbiamo includere i loop qui.

Passaggio 14: in primo luogo, dichiara due variabili come intervallo.

Codice:

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

Passaggio # 15: impostare il riferimento per la prima variabile come mostrato di seguito.

Codice:

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

Passaggio # 16: per la seconda variabile, impostare il riferimento utilizzando la funzione TROVA 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 

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.