VBA WEITER FINDEN - Wie verwende ich die FindNext-Funktion in Excel VBA?

Inhaltsverzeichnis

Excel VBA Weiter suchen

Wie in Excel wird beim Drücken von STRG + F ein Assistentenfeld angezeigt, in dem wir nach einem Wert im angegebenen Arbeitsblatt suchen können. Sobald der Wert gefunden wurde, klicken wir auf "Weiter", um den anderen ähnlichen Wert zu finden, da es sich um eine Arbeitsblattfunktion handelt kann es auch in VBA als Anwendungseigenschaftsmethode als application.findnext für die gleichen Zwecke verwenden.

Das Finden des spezifischen Werts in dem genannten Bereich ist in Ordnung, aber was ist, wenn die Anforderung darin besteht, den Wert mit mehreren Vorkommen zu finden? In einem der früheren Artikel haben wir die "Find" -Methode in VBA erörtert, und sie ist überhaupt nicht komplex, aber das Auffinden aller sich wiederholenden Vorkommen ist nur mit der "Find Next" -Methode in Excel VBA möglich.

In diesem Artikel zeigen wir Ihnen, wie Sie dieses "Find Next" in Excel VBA verwenden.

Was ist Find Next in Excel VBA?

Wie das Wort schon sagt, bedeutet "Weiter suchen", dass Sie von der gefundenen Zelle aus weiter nach dem nächsten Wert suchen, bis Sie zur ursprünglichen Zelle zurückkehren, in der wir die Suche gestartet haben.

Dies ist die erweiterte Version der Methode „Suchen“, bei der der angegebene Wert im angegebenen Bereich nur einmal durchsucht wird.

Unten finden Sie die Syntax der Methode FIND NEXT in Excel VBA.

Nachher: Es ist das Wort, nach dem wir suchen.

Beispiele für die Suche nach der nächsten Methode in Excel VBA

Nachfolgend finden Sie Beispiele für die Suche nach der nächsten Methode in Excel VBA.

Schauen Sie sich zum Beispiel die folgenden Daten an.

Schritt 1 - In diesen Daten müssen wir den Städtenamen "Bangalore" finden. Beginnen wir die Unterprozedur im grundlegenden visuellen Editor.

Code:

Sub RangeNext_Example () End Sub

Schritt 2 - Deklarieren Sie zuerst die Variable als "Range" -Objekt.

Code:

Sub RangeNext_Example () Dim Rng As Range End Sub

Schritt 3 - Legen Sie die Referenz für die Objektvariable als "Bereich" ("A2: A11") fest.

Code:

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

Da unsere Daten der Stadtliste im Bereich der Zellen von A2 bis A11 in diesem Bereich vorhanden sind, werden nur wir nach der Stadt „Bangalore“ suchen.

Da wir die Bereichsreferenz auf die Variable "Rng" setzen, verwenden wir diese Variable anstelle von RANGE ("A2: A11") jedes Mal.

Schritt 4 - Verwenden Sie die RNG-Variable und öffnen Sie die Find-Methode.

Code:

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

Schritt 5 - Das erste Argument der FIND-Methode ist "Was", dh was wir versuchen, in dem genannten Bereich zu suchen, also ist der Wert, den wir suchen, "Bangalore".

Code:

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

Schritt 6 - Um zu zeigen, in welcher Zelle wir diesen Wert gefunden haben, deklarieren Sie eine weitere Variable als Zeichenfolge.

Code:

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

Schritt 7 - Weisen Sie für diese Variable die gefundene Zellenadresse zu.

Code:

Sub RangeNext_Example () Dim Rng als Bereich Dim CellAdderess als String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address End Sub
Hinweis: RNG. Adresse, da RNG die Referenz für die gefundene Wertzelle hat.

Schritt 8 - Zeigen Sie nun das Ergebnis der zugewiesenen Zellenadressvariablen im Meldungsfeld in VBA an.

Sub RangeNext_Example () Dim Rng als Bereich Dim CellAdderess als String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Sub

Schritt 9 - Führen Sie den Code aus und sehen Sie, was wir hier bekommen.

Wir haben also den Wert „Bangalore“ in der Zelle A5 gefunden. Mit der Find-Methode können wir nur eine Zelle finden. Daher müssen wir anstelle von FIND FIND NEXT in Excel VBA verwenden.

Schritt 10 - Wir müssen auf die Bereichsobjektvariable verweisen, aber die FIND NEXT-Methode in Excel VBA verwenden.

Code:

Sub RangeNext_Example () Dim Rng als Bereich Dim CellAdderess als String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Bereich ("A2: A12"). FindNext (Rng) End Sub

Wie Sie oben sehen können, haben wir die VBA FIND NEXT-Methode verwendet, aber innerhalb der Funktion haben wir einen Bereichsobjektvariablennamen verwendet.

Schritt 11 - Weisen Sie nun erneut die Zellenadresse zu und zeigen Sie die Adresse im Meldungsfeld an.

Code:

Sub RangeNext_Example () Dim Rng als Bereich Dim CellAdderess als String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Bereich ("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) Schleife, während FirstCell FindRng.Address MsgBox "Suche ist vorbei" End Sub

Schritt Nr. 21 - Dadurch werden weiterhin alle übereinstimmenden Zellenadressen angezeigt. Am Ende wird die Nachricht im neuen Nachrichtenfeld als "Suche ist beendet" angezeigt.

Dinge, an die man sich erinnern sollte

  • Die FIND-Methode kann jeweils nur einen Wert finden.
  • FIND NEXT in Excel VBA kann den nächsten Wert aus der bereits gefundenen Wertezelle finden.
  • Verwenden Sie die Do While-Schleife, um alle Zellen im Bereich zu durchlaufen.

Interessante Beiträge...