Cari VBA Seterusnya

Excel VBA Cari Seterusnya

Seperti di excel ketika kita menekan CTRL + F kotak wizard muncul yang membolehkan kita mencari nilai di lembaran kerja yang diberikan dan setelah nilai dijumpai, kita klik di cari di sebelah untuk mencari nilai lain yang serupa, kerana ia adalah ciri lembaran kerja juga boleh menggunakannya dalam VBA sebagai kaedah Properti aplikasi sebagai application.findnext untuk tujuan yang sama.

Mencari nilai tertentu dalam julat yang disebutkan itu baik-baik saja tetapi bagaimana jika syaratnya adalah untuk mencari nilai dengan pelbagai kejadian. Dalam salah satu artikel sebelumnya, kami telah membincangkan kaedah "Cari" di VBA dan sama sekali tidak rumit tetapi mencari semua kejadian berulang hanya boleh dilakukan dengan kaedah "Cari Seterusnya" di excel VBA.

Dalam artikel ini, kami akan menunjukkan kepada anda cara menggunakan "Find Next" ini di Excel VBA.

Apa itu Find Next di Excel VBA?

Seperti kata "Find Next" bermaksud dari sel yang dijumpai terus mencari nilai seterusnya sehingga kembali ke sel asal di mana kita telah memulakan pencarian.

Ini adalah versi lanjutan dari kaedah "Cari" yang hanya mencari satu kali nilai yang disebutkan dalam julat yang disebutkan.

Berikut adalah sintaks kaedah FIND NEXT dalam Excel VBA.

Selepas: Ini adalah perkataan yang kita cari.

Contoh Kaedah Carian Selanjutnya dalam Excel VBA

Berikut adalah Contoh kaedah mencari seterusnya dalam excel VBA.

Contohnya, lihat data di bawah.

Anda boleh memuat turun Templat VBA Find Next Excel ini di sini - Templat Excel VBA Find Next

Langkah # 1 - Dalam data ini, kita perlu mencari nama bandar "Bangalore". Mari mulakan subprosedur dalam penyunting asas visual.

Kod:

 Sub RangeNext_Contoh () End Sub 

Langkah # 2 - Pertama, nyatakan pemboleh ubah sebagai objek "Range".

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range End Sub 

Langkah # 3 - Tetapkan rujukan untuk pemboleh ubah objek sebagai "Range (" A2: A11 ").

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Set Rng = Range ("A2: A12") End Sub 

Oleh kerana data senarai bandar kami ada dalam rangkaian sel dari A2 hingga A11 dalam julat ini, kami hanya akan mencari kota "Bangalore".

Oleh kerana kami menetapkan rujukan rentang ke pemboleh ubah "Rng", kami menggunakan pemboleh ubah ini dan bukannya menggunakan RANGE ("A2: A11") setiap waktu.

Langkah # 4 - Gunakan pemboleh ubah RNG dan buka kaedah Cari.

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Set Rng = Range ("A2: A12") Rng.Cari Akhir Sub 

Langkah # 5 - Argumen pertama kaedah FIND adalah "Apa" iaitu apa yang kita cari dalam julat yang disebutkan, jadi nilai yang kita cari adalah "Bangalore".

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Set Rng = Range ("A2: A12") Rng.Cari Apa: = "Bangalore" End Sub 

Langkah # 6 - Untuk menunjukkan di mana sel kita dapati nilai ini menyatakan satu lagi pemboleh ubah sebagai rentetan.

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Dim CellAdderess Sebagai String Set Rng = Range ("A2: A12") Rng.Cari Apa: = "Bangalore" End Sub 

Langkah # 7 - Untuk pemboleh ubah ini tetapkan alamat sel yang dijumpai.

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Dim CellAdderess Sebagai String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Cari Apa: = "Bangalore" CellAddress = Rng.Address End Sub 

Catatan: RNG. Alamat kerana RNG akan mempunyai rujukan untuk sel nilai yang dijumpai.

Langkah # 8 - Sekarang tunjukkan hasil pemboleh ubah alamat sel yang ditentukan di kotak mesej di VBA.

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Dim CellAdderess Sebagai String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Cari Apa: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Sub 

Langkah # 9 - Jalankan kod dan lihat apa yang kita dapat di sini.

Oleh itu, kami telah menemui nilai "Bangalore" di sel A5. Dengan kaedah Find, kita hanya dapat mencari satu sel jadi sebagai ganti FIND kita perlu menggunakan FIND NEXT di excel VBA.

Langkah # 10 - Kita perlu merujuk pemboleh ubah objek jarak tetapi dengan menggunakan kaedah FIND NEXT di excel VBA.

Kod:

 Sub RangeNext_Contoh () Dim Rng Sebagai Range Dim CellAdderess Sebagai String Set Rng = Range ("A2: A12"). Find (What: = "Bangalore") Rng.Cari Apa: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Julat ("A2: A12"). FindNext (Rng) Akhir Sub 

Seperti yang anda lihat di atas, kami telah menggunakan kaedah VBA FIND NEXT tetapi di dalam fungsinya, kami telah menggunakan nama pemboleh ubah objek jarak jauh.

Langkah # 11 - Sekarang tetapkan lagi alamat sel dan tunjukkan alamat di kotak mesej.

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 

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.