VBA НАМЕРИ СЛЕДВАЩ - Как да използвам функцията FindNext в Excel VBA?

Съдържание

Excel VBA Find Next

Подобно на Excel, когато натиснем CTRL + F, изскача полето на съветника, което ни позволява да търсим стойност в дадения работен лист и след като стойността бъде намерена, щракнете върху търси след това, за да намерите другата подобна стойност, тъй като това е функция на работния лист, може също да го използва във VBA като метод на свойство на приложението като application.findnext за същите цели.

Намирането на конкретната стойност в споменатия диапазон е добре, но какво, ако изискването е да се намери стойността с множество повторения. В една от по-ранните статии обсъдихме метода „Намери” във VBA и той изобщо не е сложен, но намирането на всички повтарящи се повторения е възможно само с метода „Намери следващия” в Excel VBA.

В тази статия ще ви покажем как да използвате тази „Намери следващата“ в Excel VBA.

Какво е Find Next в Excel VBA?

Както казва думата, „Find Next“ означава от намерената клетка продължете да търсите следващата стойност, докато се върне обратно към първоначалната клетка, откъдето започнахме търсенето.

Това е усъвършенстваната версия на метода „Намери“, който търси само веднъж споменатата стойност в споменатия диапазон.

По-долу е синтаксисът на метода FIND NEXT в Excel VBA.

След: Това е думата, която търсим.

Примери за метод за намиране на следващ в Excel VBA

По-долу са дадени примерите за намиране на следващия метод в Excel VBA.

Например погледнете данните по-долу.

Стъпка 1 - В тези данни трябва да намерим името на града „Бангалор“. Нека започнем подпроцедурата в основния визуален редактор.

Код:

Sub RangeNext_Example () Край Sub

Стъпка 2 - Първо декларирайте променливата като обект „Обхват“.

Код:

Sub RangeNext_Example () Dim Rng As Range End Sub

Стъпка # 3 - Задайте референцията за обектната променлива като “Обхват (“ A2: A11 ”).

Код:

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

Тъй като нашите данни от списъка с градове са в диапазона от клетки от А2 до А11 в този диапазон, само ние ще търсим града „Бангалор“.

Тъй като задаваме препратка към диапазона на променливата „Rng“, ние използваме тази променлива, вместо да използваме RANGE („A2: A11“) всеки път.

Стъпка # 4 - Използвайте променливата RNG и отворете метода Find.

Код:

Sub RangeNext_Example () Dim Rng As Range Set Rng = 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 CellAdderess 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. Адрес, защото RNG ще има референтна клетка за намерена стойност.

Стъпка # 8 - Сега покажете резултата от присвоената променлива за адрес на клетка в полето за съобщения във 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 - Стартирайте кода и вижте какво получаваме тук.

Така че намерихме стойността „Бангалор“ в клетката A5. С метода Find можем да намерим само една клетка, така че вместо FIND, трябва да използваме FIND NEXT в excel VBA.

Стъпка # 10 - Трябва да се позовем на променливата на обект диапазон, но като използваме метода FIND NEXT в excel 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 Set Rng = Обхват ("A2: A12"). FindNext (Rng) End Sub

Както можете да видите по-горе, използвахме метода VBA FIND NEXT, но вътре във функцията използвахме име на променлива на обект на диапазон.

Стъпка # 11 - Сега отново задайте адреса на клетката и покажете адреса в полето за съобщение.

Код:

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 = Обхват ("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 "Търсенето е завършено" End Sub

Стъпка # 21 - Това ще продължи да показва всички съвпадащи адреси на клетки и накрая ще показва съобщението като „Търсене е приключило“ в новото поле за съобщение.

Неща за запомняне

  • Методът FIND може да намери само една стойност наведнъж.
  • FIND NEXT в Excel VBA може да намери следващата стойност от вече намерената клетка за стойност.
  • Използвайте цикъла Do While, за да преминете през всички клетки в диапазона.

Интересни статии...