VBA TÌM NGƯỜI TIẾP THEO - Làm thế nào để sử dụng hàm FindNext trong Excel VBA?

Excel VBA Tìm tiếp theo

Giống như trong excel khi chúng ta nhấn CTRL + F, một hộp thuật sĩ bật lên cho phép chúng ta tìm kiếm một giá trị trong trang tính đã cho và khi giá trị được tìm thấy, chúng ta nhấp vào tìm tiếp theo để tìm giá trị tương tự khác, vì nó là một tính năng của trang tính mà chúng ta cũng có thể sử dụng nó trong VBA dưới dạng phương thức thuộc tính Ứng dụng như application.findnext cho các mục đích tương tự.

Tìm giá trị cụ thể trong phạm vi đã đề cập là được, nhưng nếu yêu cầu là tìm giá trị có nhiều lần xuất hiện thì sao. Trong một trong những bài viết trước, chúng ta đã thảo luận về phương pháp “Find” trong VBA, và nó không phức tạp chút nào nhưng việc tìm kiếm tất cả các lần lặp lại chỉ có thể thực hiện được với phương pháp “Find Next” trong excel VBA.

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách sử dụng “Tìm tiếp theo” này trong Excel VBA.

Tìm Tiếp theo trong Excel VBA là gì?

Như từ nói, “Tìm tiếp theo” có nghĩa là từ ô tìm thấy tiếp tục tìm kiếm giá trị tiếp theo cho đến khi quay trở lại ô ban đầu nơi chúng tôi đã bắt đầu tìm kiếm.

Đây là phiên bản nâng cao của phương pháp "Tìm", chỉ tìm kiếm một lần giá trị được đề cập trong phạm vi được đề cập.

Dưới đây là cú pháp của phương thức TÌM KIẾM TIẾP THEO trong Excel VBA.

Sau: Đó là từ mà chúng tôi đang tìm kiếm.

Ví dụ về Tìm phương pháp tiếp theo trong Excel VBA

Dưới đây là các ví dụ về tìm phương pháp tiếp theo trong excel VBA.

Ví dụ, hãy xem dữ liệu dưới đây.

Bước # 1 - Trong dữ liệu này, chúng ta cần tìm tên thành phố “Bangalore”. Hãy bắt đầu quy trình con trong trình chỉnh sửa trực quan cơ bản.

Mã:

Sub RangeNext_Example () End Sub

Bước # 2 - Đầu tiên, khai báo biến là đối tượng "Phạm vi".

Mã:

Phạm vi conNext_Example () Dim Rng như dải ô cuối phụ

Bước # 3 - Đặt tham chiếu cho biến đối tượng là “Phạm vi (“ A2: A11 ”).

Mã:

Dải conNext_Example () Dim Rng Như dải ô Đặt Rng = Phạm vi ("A2: A12") Kết thúc Sub

Vì dữ liệu của chúng tôi về danh sách thành phố nằm trong phạm vi ô từ A2 đến A11 trong phạm vi này, nên chỉ chúng tôi mới tìm kiếm thành phố “Bangalore”.

Vì chúng tôi đặt tham chiếu phạm vi thành biến “Rng”, chúng tôi sử dụng biến này thay vì sử dụng RANGE (“A2: A11”) mọi lúc.

Bước # 4 - Sử dụng biến RNG và mở phương thức Tìm.

Mã:

Dải conNext_Example () Dim Rng Như dải ô Đặt Rng = Phạm vi ("A2: A12") Rng.Tìm kết thúc phụ

Bước # 5 - Đối số đầu tiên của phương thức TÌM là “Cái gì”, tức là những gì chúng ta đang cố gắng tìm kiếm trong phạm vi được đề cập, vì vậy giá trị chúng ta đang tìm kiếm là “Bangalore”.

Mã:

Phạm vi conNext_Example () Dim Rng làm phạm vi Đặt Rng = Phạm vi ("A2: A12") Rng.Find What: = "Bangalore" End Sub

Bước # 6 - Để hiển thị trong ô nào, chúng ta đã tìm thấy giá trị này, hãy khai báo thêm một biến dưới dạng chuỗi.

Mã:

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

Bước # 7 - Đối với biến này, chỉ định địa chỉ ô tìm thấy.

Mã:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Tìm (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address End Sub
Lưu ý: RNG. Địa chỉ vì RNG sẽ có tham chiếu cho ô giá trị được tìm thấy.

Bước # 8 - Bây giờ hiển thị kết quả biến địa chỉ ô được gán trong hộp thông báo trong VBA.

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Tìm (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress End Phụ

Bước # 9 - Chạy mã và xem những gì chúng tôi nhận được ở đây.

Vì vậy, chúng tôi đã tìm thấy giá trị "Bangalore" trong ô A5. Với phương thức Find, chúng ta chỉ có thể tìm thấy một ô, vì vậy thay vì FIND, chúng ta cần sử dụng FIND NEXT trong excel VBA.

Bước # 10 - Chúng ta cần tham chiếu đến biến đối tượng phạm vi nhưng bằng cách sử dụng phương thức FIND NEXT trong excel VBA.

Mã:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Tìm (What: = "Bangalore") Rng.Find What: = "Bangalore" CellAddress = Rng.Address MsgBox CellAddress Set Rng = Range ("A2: A12"). FindNext (Rng) End Sub

Như bạn thấy ở trên, chúng ta đã sử dụng phương thức VBA FIND NEXT, nhưng bên trong hàm, chúng ta đã sử dụng một tên biến đối tượng phạm vi.

Bước # 11 - Bây giờ một lần nữa, gán địa chỉ ô và hiển thị địa chỉ trong hộp tin nhắn.

Mã:

Sub RangeNext_Example () Dim Rng As Range Dim CellAdderess As String Set Rng = Range ("A2: A12"). Tìm (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) Trong khi FirstCell FindRng.Address MsgBox "Tìm kiếm đã kết thúc" End Sub

Bước # 21 - Thao tác này sẽ tiếp tục hiển thị tất cả các địa chỉ ô phù hợp và cuối cùng, nó sẽ hiển thị thông báo “Tìm kiếm đã kết thúc” trong hộp thư mới.

Những điều cần ghi nhớ

  • Phương thức FIND chỉ có thể tìm thấy một giá trị tại một thời điểm.
  • TÌM TIẾP THEO trong excel VBA có thể tìm giá trị tiếp theo từ ô giá trị đã được tìm thấy.
  • Sử dụng vòng lặp Do While để lặp qua tất cả các ô trong phạm vi.

thú vị bài viết...