VBA ЗНАЙТИ ДАЛІ | Як використовувати функцію FindNext у програмі Excel VBA?

Excel VBA Знайти далі

Як і в Excel, коли ми натискаємо CTRL + F, з'являється вікно майстра, яке дозволяє нам шукати значення на даному аркуші, і як тільки значення знайдене, ми клацнемо на find поруч, щоб знайти інше подібне значення, оскільки це функція робочого аркуша, також може використовувати його у VBA як метод властивості застосунку як application.findnext для тих самих цілей.

Пошук конкретного значення у згаданому діапазоні - це нормально, але що, якщо вимога полягає у пошуку значення з кількома випадками. В одній з попередніх статей ми обговорювали метод "Знайти" у VBA, і він зовсім не складний, але знайти всі повторювані випадки можливо лише за допомогою методу "Знайти далі" у excel VBA.

У цій статті ми покажемо вам, як використовувати цю функцію "Знайти далі" в Excel VBA.

Що таке Find Next у Excel VBA?

Як говорить слово "Знайти далі", означає, що з знайденої комірки продовжуйте пошук наступного значення, поки не повернеться до початкової комірки, де ми розпочали пошук.

Це вдосконалена версія методу “Знайти”, який здійснює пошук лише одного разу за згаданим значенням у згаданому діапазоні.

Нижче наведено синтаксис методу FIND NEXT у Excel VBA.

Після: Це слово, яке ми шукаємо.

Приклади пошуку наступного методу в Excel VBA

Нижче наведено приклади пошуку наступного методу в Excel VBA.

Наприклад, подивіться наведені нижче дані.

Ви можете завантажити цей шаблон VBA Знайти наступний шаблон Excel тут - VBA Знайти наступний шаблон Excel

Крок №1 - У цих даних нам потрібно знайти назву міста “Бангалор”. Почнемо підпроцедуру в редакторі Visual Basic.

Код:

 Sub RangeNext_Example () Кінець Sub 

Крок №2 - Спочатку оголосіть змінну об’єктом “Діапазон”.

Код:

 Sub RangeNext_Example () Dim Rng As Range End Sub 

Крок No3 - Встановіть посилання на змінну об’єкта як “Діапазон (“ A2: A11 ”).

Код:

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

Оскільки наші дані списку міст знаходяться в діапазоні комірок від А2 до А11 лише в цьому діапазоні, ми збираємось шукати місто “Бангалор”.

Оскільки ми встановлюємо посилання на діапазон на змінну “Rng”, ми використовуємо цю змінну замість RANGE (“A2: A11”) кожного разу.

Крок No4 - Використовуйте змінну RNG та відкрийте метод Find.

Код:

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

Крок №5 - Першим аргументом методу FIND є „Що”, тобто те, що ми намагаємось шукати у згаданому діапазоні, тому значення, яке ми шукаємо, - „Бангалор”.

Код:

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

Крок №6 - Щоб показати, в якій комірці ми знайшли це значення, оголосіть ще одну змінну як рядок.

Код:

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

Крок 7 - Для цієї змінної призначте знайдену адресу комірки.

Код:

 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 

Примітка: RNG.Address, оскільки RNG матиме посилання на знайдену комірку значення.

Крок No8 - Тепер покажіть результат присвоєної змінної адреси комірки у вікні повідомлення у 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 Під 

Крок 9 - Запустіть код і подивіться, що ми тут отримаємо.

So we have found the value “Bangalore” in the cell A5. With the Find method, we can find only one cell so instead of FIND we need to use FIND NEXT in excel VBA.

Step#10 – We need to reference the range object variable but by using the FIND NEXT method in excel VBA.

Code:

 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 

As you can see above we have used the VBA FIND NEXT method but inside the function, we have used a range object variable name.

Step#11 – Now again assign the cell address and show the address in the message box.

Code:

 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 

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