VBA Znajdź następny

Excel VBA Znajdź następny

Podobnie jak w programie Excel, gdy naciskamy CTRL + F, pojawia się okno kreatora, które pozwala nam przeszukać wartość w danym arkuszu, a po znalezieniu wartości klikamy znajdź obok, aby znaleźć inną podobną wartość, ponieważ jest to funkcja arkusza roboczego, którą można go również używać w VBA jako metody właściwości aplikacji jako application.findnext do tych samych celów.

Znalezienie określonej wartości w wymienionym zakresie jest w porządku, ale co, jeśli wymaganiem jest znalezienie wartości z wieloma wystąpieniami. W jednym z wcześniejszych artykułów omówiliśmy metodę „Znajdź” w języku VBA i nie jest to wcale skomplikowane, ale znalezienie wszystkich powtarzających się wystąpień jest możliwe tylko przy użyciu metody „Znajdź następny” w programie Excel VBA.

W tym artykule pokażemy, jak korzystać z funkcji „Znajdź następny” w programie Excel VBA.

Co to jest Znajdź następny w Excel VBA?

Jak mówi słowo „Znajdź następny”, oznacza to, że ze znalezionej komórki kontynuuj wyszukiwanie następnej wartości, aż wróci do pierwotnej komórki, w której rozpoczęliśmy wyszukiwanie.

Jest to zaawansowana wersja metody „Znajdź”, która wyszukuje tylko raz podaną wartość w podanym zakresie.

Poniżej znajduje się składnia metody ZNAJDŹ NASTĘPNY w Excel VBA.

Po: To jest słowo, którego szukamy.

Przykłady metody Znajdź następny w Excel VBA

Poniżej znajdują się przykłady znalezienia następnej metody w programie Excel VBA.

Na przykład spójrz na poniższe dane.

Możesz pobrać ten szablon VBA Znajdź następny szablon Excel tutaj - VBA Znajdź następny szablon Excel

Krok 1 - W tych danych musimy znaleźć nazwę miasta „Bangalore”. Zacznijmy podprocedurę w edytorze Visual Basic.

Kod:

 Sub Range Next_Example () End Sub 

Krok # 2 - Najpierw zadeklaruj zmienną jako obiekt „Zakres”.

Kod:

 Sub Range Next_Example () Dim Rng As Range End Sub 

Krok # 3 - Ustaw odniesienie dla zmiennej obiektu jako „Zakres („ A2: A11 ”).

Kod:

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

Ponieważ nasze dane listy miast znajdują się w zakresie komórek od A2 do A11, tylko w tym zakresie będziemy szukać miasta „Bangalore”.

Ponieważ ustawiamy odniesienie do zakresu na zmienną „Rng”, używamy tej zmiennej zamiast używania RANGE („A2: A11”) za każdym razem.

Krok # 4 - Użyj zmiennej RNG i otwórz metodę Find.

Kod:

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

Krok # 5 - Pierwszym argumentem metody FIND jest „Co”, czyli to, czego szukamy we wspomnianym zakresie, więc wartością, którą szukamy jest „Bangalore”.

Kod:

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

Krok # 6 - Aby pokazać, w której komórce znaleźliśmy tę wartość, zadeklaruj jeszcze jedną zmienną jako ciąg.

Kod:

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

Krok # 7 - W przypadku tej zmiennej przypisz znaleziony adres komórki.

Kod:

 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 

Uwaga: RNG.Address, ponieważ RNG będzie mieć odwołanie do znalezionej komórki wartości.

Krok # 8 - Teraz pokaż przypisaną zmienną adresu komórki w oknie komunikatu w 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 Pod 

Krok # 9 - Uruchom kod i zobacz, co tu otrzymamy.

Znaleźliśmy więc wartość „Bangalore” w komórce A5. Dzięki metodzie Find możemy znaleźć tylko jedną komórkę, więc zamiast FIND musimy użyć funkcji FIND NEXT w Excel VBA.

Krok # 10 - Musimy odwołać się do zmiennej obiektu zakresu, ale przy użyciu metody ZNAJDŹ NASTĘPNY w programie Excel VBA.

Kod:

 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) End Sub 

Jak widać powyżej, użyliśmy metody VBA FIND NEXT, ale wewnątrz funkcji użyliśmy nazwy zmiennej obiektu zakresu.

Krok # 11 - Teraz ponownie przypisz adres komórki i pokaż adres w oknie wiadomości.

Kod:

 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 

Krok # 12 - Uruchom makro i zobacz, co otrzymamy w pierwszym oknie komunikatu.

Krok # 13 - Pierwsze okno komunikatu pokazuje wartość „Bangalore” znalezioną w komórce A5, kliknij przycisk OK, aby zobaczyć następną znalezioną wartość.

Druga wartość znaleziona w komórce A7, naciśnij Ok, aby kontynuować.

VBA Znajdź następny (za pomocą pętli)

Opuści podprocedurę VBA, ale w komórce A10 znajdujemy się jeszcze jeden. Jeśli wartości znajdują się w więcej niż jednej komórce, lepszym pomysłem jest użycie pętli.

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) 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.