Cách Tạo Hộp Tìm Kiếm Siêu Tốc Bằng VBA Excel

Hôm nay mình sẽ hướng dẫn các bạn cách tạo hộp tìm kiếm siêu tốc trong Excel bằng VBA. Chắc hẳn trong quá trình làm việc bạn sẽ gặp phải trường hợp cần tìm kiếm dữ liệu trong một bảng dữ liệu nào đó. Một cách thường được sử dụng là filter dữ liệu cần tìm kiếm, cách này mặc dù sẽ tìm được nhưng sẽ mất thời gian để filter lại khi tìm dữ liệu mới. Tuy nhiên với hộp tìm kiếm bạn chỉ cần nhập vào dữ liệu là có thể tìm được tương tự như thanh tìm kiếm của google. Hãy cùng mình tìm hiểu nhé.

Format dữ liệu

Mình sẽ gửi các bạn một file Excel để có thể vừa xem bài viết vừa thực hành, tải tại đây.

Sau khi đã tải xuống file thực hành, điều cần làm đầu tiên là tạo table cho dữ liệu. Cách làm là chọn vào một ô bất kỳ trên vùng dữ liệu, sau đó ấn Ctrl + T. Sẽ xuất hiện bảng Create Table sau khi ấn, bạn nhớ chọn vào My table has headers nhé. Hoàn tất chọn OK.

tạo bảng

Bạn có thể đổi tên của table tại thẻ Design, sau đó chọn vào mục Table Name để đổi tên (tham khảo hình dưới).

đổi tên bảng

Thực hiện việc gõ vào một ô để thể hiện chức năng tìm kiếm, ví dụ mình sẽ nhập vào là “TÌM KIẾM”.

chức năng tìm kiếm

Chúng ta sẽ cần thẻ Developer để thực hiện công việc tiếp theo. Bạn nào chưa có thẻ Developer thì có thể click chuột phải vào vị trí bất kỳ trên thanh Ribbon, sau đó chọn vào Customize the Ribbon.

mở tùy chọn

Tại cửa sổ Excel Options bạn sẽ tích chọn vào Developer nếu chưa tích nhé, hoàn tất chọn OK.

hiện thẻ developer

Kế tiếp bạn sẽ truy cập vào thẻ Developer → chọn Insert → tại ActiveX Controls chọn vào mục Textbox. Thực hiện vẽ Textbox với chiều dài khoảng 2 ô trong Excel.

chèn textbox

Khi đã có được Textbox bạn sẽ chọn vào nó và click chuột phải, cuối cùng chọn vào Properties.

thuộc tính

Tại cửa sổ Properties chúng ta sẽ thực hiện liên kết textbox với một ô trên Excel bằng cách điền tên ô vào phần LinkedCell, mình sẽ chọn ô B2 để liên kết nên sẽ điền là B2 (tham khảo hình). Sau khi đã liên kết xong các bạn nhớ đóng lại cửa sổ Properties.

liệt kê ô

Tiếp tục chọn vào Textbox và click chuột phải chọn View Code, đây là bước để chúng ta chuẩn bị cửa sổ code phục vụ cho công đoạn sau.

xem code

Sẽ xuất hiện cửa sổ Microsoft Visual Basic for Applications để bạn có thể code cho Textbox. Do đây chỉ là bước chuẩn bị nên sau khi mở lên bạn hãy tạm tắt nó xuống nhé (chọn vào dấu -).

tạm tắt cửa sổ

Tạo hộp tìm kiếm

Việc tạo code cho hộp tìm kiếm khá phức tạp nên chúng ta sẽ sử dụng công cụ Record Macro, đây là công cụ sẽ giúp cho những bạn không biết code vẫn có thể làm được hộp tìm kiếm.

Đầu tiên truy cập vào thẻ Developer → chọn Record Macro. Sẽ hiện lên cửa sổ Record Macro khi chọn vào, bạn nên để tên mặc định là “Macro1” cho dễ nhận biết. Hoàn tất chọn OK.

chức năng lưu lại

Những bước tiếp theo bạn cần làm theo chính xác những gì mình hướng dẫn để không phát sinh lỗi sau này. Trước tiên chọn vào biểu tượng filter của “Nhà Phân Phối”, sau đó chọn tiếp Text Filters, cuối cùng là chọn vào Contains.

tìm kiếm lần một

Tại cửa sổ Custom AutoFilter, bạn sẽ nhập vào một ký tự trong chuỗi cần tìm kiếm (ví dụ là “v”). Contains sẽ lấy ký tự bất kỳ trong chuỗi để lọc ra kết quả tìm kiếm chính xác nhất. Hoàn tất chọn OK.

tìm kiếm ký tự

Tiếp tục chọn vào biểu tượng filter của “Nhà Phân Phối”, chọn vào Search và nhập vào ký tự lúc nảy tức là “v”. Hoàn tất chọn OK.

tìm kiếm lần hai

Kết thúc việc ghi lại bằng cách chọn vào thẻ Developer và chọn Stop Recording.

tắt ghi lại

Xem code của các bước vừa ghi lại tại Visual Basic cũng nằm trong thẻ Developer. Do lúc nảy chúng ta để tên là “Macro1” nên bạn chọn vào Modules → chọn tiếp Module1 sẽ thấy code.

code vừa ghi được

Thực hiện copy (Ctrl + C) toàn bộ code vừa ghi được sang cửa sổ code đã được bật lúc nảy (sẽ là sheet1 nếu bạn chưa đặt tên sheet).

sao chép code

Chúng ta sẽ loại bỏ những đoạn code không cần thiết và viết thêm một vài điều kiện để hộp tìm kiếm hoạt động tốt nhất có thể.

Code mẫu:

ActiveSheet.ListObjects("Bang1").Range.AutoFilter Field:=1, Criteria1:= _

        "*" & [B2] & "*", Operator:=xlOr
If Range("B2").Value = "" Then ActiveSheet.ListObjects("Bang1").Range.AutoFilter

Đoạn code trên có ba điểm bạn cần lưu ý.

Thứ nhất chính là ô B2, do vừa nãy mình đã lựa chọn liên kết ô B2 với textbox nên tại đây sẽ là B2.

Thứ hai, là đoạn code điều kiện If là nhập tay vào nên bạn sẽ không thể thấy trong đoạn code ban đầu. Đây là đoạn code sẽ thực hiện chức năng khi bạn xóa ký tự trong hộp tìm kiếm thì các filter đã lọc sẽ được reset lại ban đầu. Đoạn code này bạn có thể không code theo mình cũng được, sẽ không ảnh hưởng quá nhiều đến hộp tìm kiếm đâu nhé.

Thứ ba chính là “Bang1”, đây là tên của table bạn đặt lúc ban đầu. Cần phải đúng tên table thì code mới không xảy ra lỗi được.

code mẫu

Bạn sẽ tắt chức năng Design Mode ở thẻ Developer để hoàn tất việc điều chỉnh nhé. Sau khi tắt bạn đã có thể tìm kiếm dữ liệu giống như google được rồi đấy.

tắt chế độ thiết kế

Như vậy mình đã hoàn thành bài hướng dẫn cách tạo hộp tìm trong Excel bằng VBA. Đây là một chức năng rất tiện lợi khi bạn sở hữu một dữ liệu khổng lồ. Nó sẽ giúp bạn tiết kiệm rất nhiều thời gian tìm kiếm các dữ liệu cần thiết. Nếu muốn học thêm các bài học khác về Excel thì đừng ngại tìm kiếm trên website này nhé.

Video hướng dẫn

 

CHO ĐIỂM BÀI VIẾT NÀY

vote data

Bình luận bài viết

DMCA.com Protection Status

0989.717.035
ZALO CHAT
TOP