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 tôi nhấn CTRL + F, một hộp thuật sĩ bật lên cho phép chúng tôi tìm kiếm một giá trị trong trang tính đã cho và khi giá trị được tìm thấy, chúng tôi 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 tôi 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 đề cập là tốt nhưng nếu yêu cầu là tìm giá trị có nhiều lần xuất hiện. Trong một trong những bài viết trước, chúng ta đã thảo luận về phương pháp "Tìm" 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 "Tìm tiếp theo" 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ừ “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ề phương thức find next trong excel VBA.

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

Bạn có thể tải mẫu VBA Find Next Excel này tại đây - Mẫu VBA Find Next Excel

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 cơ bản trực quan.

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ố có trong phạm vi ô từ A2 đến A11, trong phạm vi này chỉ nên chúng tôi sẽ tìm kiếm thành phố “Bangalore”.

Vì chúng tôi đặt tham chiếu phạm vi cho 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, hãy gán đị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.Address 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 chỉ định 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 ô nên 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 tôi đã sử dụng phương thức VBA FIND NEXT nhưng bên trong hàm, chúng tôi đã 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 chỉ định đị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 

Bước # 12 - Chạy macro và xem những gì chúng ta nhận được trong hộp thông báo đầu tiên.

Bước # 13 - Hộp thông báo đầu tiên hiển thị giá trị “Bangalore” được tìm thấy trong ô A5, nhấp vào nút Ok để xem giá trị tìm thấy tiếp theo.

Giá trị thứ hai được tìm thấy trong ô A7, nhấn Ok để tiếp tục.

VBA Tìm Tiếp theo (Sử dụng Vòng lặp)

Nó sẽ thoát khỏi quy trình con VBA nhưng chúng ta còn một quy trình nữa được tìm thấy trong ô A10. Khi các giá trị được tìm thấy trong nhiều ô thì tốt hơn là sử dụng các vòng lặp.

Trong trường hợp này, chúng tôi cũng có giá trị “Bangalore” trong nhiều ô, vì vậy chúng tôi cần bao gồm các vòng lặp ở đây.

Bước # 14 - Đầu tiên, khai báo hai biến là phạm vi.

Mã:

 Dải conNext_Example1 () Dim Rng Như dải Dim FindRng Như dải ô Kết thúc Sub 

Bước # 15 - Đặt tham chiếu cho biến đầu tiên như hình dưới đây.

Mã:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Tìm (What: = "Bangalore") End Sub 

Bước # 16 - Đối với biến thứ hai, hãy đặt tham chiếu bằng cách sử dụng hàm FIND VBA.

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") Đặt FindRng = Rng.FindNext ("Bangalore") End Sub 

Bước # 17 - Trước khi chúng tôi bắt đầu tìm kiếm giá trị, chúng tôi cần xác định từ ô nào chúng tôi đang bắt đầu tìm kiếm, vì ô đó khai báo biến dưới dạng một chuỗi.

Mã:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") Đặt FindRng = Rng.FindNext ("Bangalore") Dim FirstCell As String FirstCell = Rng.Address End Sub 

Bước # 18 - Đối với biến này, hãy gán địa chỉ ô đầu tiên.

Mã:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11") Đặt FindRng = Rng.Find (What: = "Bangalore") Dim FirstCell As String FirstCell = Rng.Address End Sub 

Bước # 19 - Bây giờ chúng ta cần bao gồm vòng lặp “Do While” để lặp qua tất cả các ô và tìm giá trị tìm kiếm.

Mã:

 Sub RangeNext_Example1 () Dim Rng As Range Dim FindRng As Range Set Rng = Range ("A2: A11"). Find (What: = "Bangalore") Đặt FindRng = Rng.FindNext ("Bangalore") Dim FirstCell As String FirstCell = Rng.Address Do Loop While FirstCell Cell.Address End Sub 

Bên trong vòng lặp đề cập đến hộp thông báo và phương pháp VBA FIND NEXT.

Bước # 20 - Dưới đây là mã hoàn chỉnh dành cho bạn.

Mã:

 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ả đị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.

$config[zx-auto] not found$config[zx-overlay] not found