VBA Weiter suchen

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. 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 "Find Next" bedeutet, suchen Sie in der gefundenen Zelle weiter nach dem nächsten Wert, 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 die Beispiele für die Suche nach der nächsten Methode in Excel VBA.

Schauen Sie sich zum Beispiel die folgenden Daten an.

Sie können diese VBA Find Next Excel-Vorlage hier herunterladen - VBA Find Next Excel-Vorlage

Schritt 1 - In diesen Daten müssen wir den Städtenamen "Bangalore" finden. Beginnen wir die Unterprozedur im Visual Basic-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 Zellbereich von A2 bis A11 nur in diesem Bereich vorhanden sind, werden 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 dieser Variablen 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, sodass wir anstelle von FIND FIND NEXT in Excel VBA verwenden müssen.

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 

Schritt 12 - Führen Sie das Makro aus und sehen Sie, was wir im ersten Meldungsfeld erhalten.

Schritt 13 - Das erste Meldungsfeld zeigt den Wert "Bangalore" in der Zelle A5 an. Klicken Sie auf die Schaltfläche "OK", um den nächsten gefundenen Wert anzuzeigen.

Der zweite Wert in der A7-Zelle. Drücken Sie OK, um fortzufahren.

VBA Find Next (Using Loop)

Es wird die VBA-Unterprozedur verlassen, aber wir sind eine weitere in Zelle A10. Wenn die Werte in mehr als einer Zelle gefunden werden sollen, ist es besser, Schleifen zu verwenden.

Auch in diesem Fall haben wir den Wert "Bangalore" in mehr als einer Zelle, daher müssen wir hier Schleifen einfügen.

Schritt 14 - Deklarieren Sie zunächst zwei Variablen als Bereich.

Code:

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

Schritt 15 - Stellen Sie die Referenz für die erste Variable wie unten gezeigt ein.

Code:

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

Schritt 16 - Stellen Sie für die zweite Variable die Referenz mit der Funktion FIND VBA ein.

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

Schritt 17 - Bevor wir nach dem Wert suchen, müssen wir identifizieren, von welcher Zelle aus wir die Suche starten, da dies die Variable als Zeichenfolge deklariert.

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 

Schritt 18 - Weisen Sie dieser Variablen die erste Zellenadresse zu.

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 

Schritt Nr. 19 - Jetzt müssen wir die "Do While" -Schleife einfügen, um alle Zellen zu durchlaufen und den Suchwert zu finden.

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 

Erwähnen Sie in der Schleife das Meldungsfeld und die VBA FIND NEXT-Methode.

Schritt 20 - Unten finden Sie den vollständigen Code für Sie.

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 21 - Dadurch wird weiterhin die gesamte übereinstimmende Zellenadresse 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.