Tìm kiếm dữ liệu trong listbox từ textbox

Ờ Phong
15/06/21
1280
3

Khi làm việc trong Excel, bạn thường hay phải lọc, tìm kiếm dữ liệu. Việc này đôi khi khiến bạn mất nhiều thời gian khi phải thao tác thủ công bằng tay. Hôm nay, Tinvanphong.com xin chia sẽ cho bạn cách tạo, tìm kiếm dữ liệu trong listbox từ textbox.

Trong bài viết này, Tinvanphong.com sẽ giới thiệu đến các bạn cách tìm kiếm và lọc dữ liệu tự động, khi bạn nhập vào một ô trong Excel bằng VBA. Bạn cũng có thể tải file mẫu ở cuối bài viết. Hãy cùng tìm hiểu ngay nào.

Tìm kiếm dữ liệu trong listbox từ textbox

Trong quá trình làm việc với Excel, mình có gặp một số trường dò tìm giá trị của 1 mảng dữ liệu này đó hoặc muốn nhập liệu nhanh ví dụ các mã hàng, hoặc các nội dung liên quan đến tìm kiếm. Hôm nay mình share các bạn cách tạo 1 hộp tìm kiếm dựa trên USERFORM.

Tìm kiếm dữ liệu trong listbox từ textbox
Tìm kiếm dữ liệu trong listbox từ textbox

Bạn có thể sử dụng tìm kiếm này, chuyển dữ liệu muốn tìm kiếm vào Sheet bạn muốn nhập liệu, giúp chúng ta nhập liệu nhanh và chính xác cũng như hiệu quả hơn.

1. CÔNG DỤNG

  • Tìm kiếm nhanh dữ liệu như hình trên, ví dụ như Mã SP , Tên SP , đơn giá v.v…
  • Tốc độ tìm kiếm nhanh, trên 2000 dòng đến 5000 dòng dữ liệu.
  • Tìm kiếm bất kỳ đoạn text nào, trong 1 vùng dữ liệu đây.

2. HƯỚNG DẪN

  1. Để làm điều đó, đầu tiên bạn vào chương trình soạn thảo VBA, có 2 cách. Nhấn tổ hợp phím ALT + F11 hoặc vào DEVOLOPER -> Chọn Visual Basic
  2. Trong trường hợp bạn không có tab DEVOLOPER, bạn vào File chọn OPTIONS chọn CUSTOMIZE RIBBON -> chọn thẻ DEVOLOPER

Bước 1: Tạo 1 Model ( Insert -> Module ) -> copy toàn bộ code dưới vào VBA.

Tìm kiếm dữ liệu trong listbox từ textbox
Tìm kiếm dữ liệu trong listbox từ textbox
Option Explicit
Option Compare Text
Public ArrayData, MaxRow&, MaxCol%, TempArr()

Public Sub faytLstBxMultiCol(strSearchTxt$, _
                              ListBox As MSForms.ListBox)
'---------------------------------------------------------------------------------
'# Code tim kiem nhieu cot trong Listbox.
'# Tac gia: HeSanbi - GPE
'---------------------------------------------------------------------------------
On Error Resume Next '----------------------------- [ bãy lôi ]
    Dim I&, J%, r&
    For I = 1 To MaxRow
        For J = 1 To MaxCol: If ArrayData(I, J) Like "*" & strSearchTxt & "*" Then GoTo AddArr:
        Next
        If False Then
AddArr:             r = r + 1
            For J = 1 To MaxCol
                TempArr(r, J) = ArrayData(I, J)
                If J = 5 And TempArr(r, J) >= 1000 Then _
                   TempArr(r, J) = (ArrayData(I, J))
            Next
        End If
    Next
    With ListBox
        .Clear: .AddItem
        If r = 0 Then GoTo EH_Exit
        ReDim result(1 To r, 1 To MaxCol)
        GoSub TranTempArr: .List = result
    End With
EH_Exit:     Exit Sub
TranTempArr:
    For I = 1 To r: For J = 1 To MaxCol: result(I, J) = TempArr(I, J): Next J, I
    Return
    End Sub

Bước 2 : Tạo 1 USERFORM  -> Tạo 1 TEXTBOX chọn View Code -> Copy code dưới vào.

Private Sub TextBox1_Change()
' khi tim bat dau tim kiem thi call du lieu trong texbox
Call faytLstBxMultiCol(Me.TextBox1.Value, Me.ListBox1)
End Sub

Bước 3 : Tạo 1 LISTBOX ,  bạn chọn VIEW CODEUSERFORM.

Tìm kiếm dữ liệu trong listbox từ textbox
Tìm kiếm dữ liệu trong listbox từ textbox

Sau đó, các bạn copy đoạn Code này vào.

Sub ganSourceListbox()
    On Error Resume Next
    With Sheet1.Range("A1")
    MaxCol = Sheet1.Range("A1").End(xlToRight).Column  '--- hàng
    MaxRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row - 1 '---- c?t
    ArrayData = .Resize(MaxRow, MaxCol).Value
    End With
    ReDim TempArr(1 To MaxRow, 1 To MaxCol)
    ListBox1.List = ArrayData
End Sub

Maxcol : là tiêu đề bảng dữ liệu ( xác định có bao nhiêu cột dữ liệu ).

MaxRow : là lấy số hàng cuối cùng của bảng dữ liệu.

Listbox1 : là tên của listbox bạn mới tạo.

Bước 4: Bạn cần copy đoạn Code dưới này vào, ở đây khi userform khởi chạy thì đồng thời gắn dữ liệu vào Private Sub UserForm_Initialize() Call ganSourceListbox End Sub

3 – LINK DOWN

DOWN BẢN DEMO

Chúc các bạn thành công, các bạn có thể comment phía dưới hoặc liên hệ admin thể giúp trả lời thắc mắc cho bạn nhanh nhất có thể.

Tham khảo thêm các bài viết.

Chuyển đổi số thành chữ viết bằng Code VBA

Tạo phạm vi nhập liệu cho Textbox trong VBA

 

3 thoughts on “Tìm kiếm dữ liệu trong listbox từ textbox

  1. Pingback: Hướng dẫn Userform resize with VBA or Windows API 2021

  2. Pingback: Zoom Picture Frame In Userform VBA EXCEL

  3. Pingback: Các điều kiện nút đóng [X] trong VBA UserForm 2021

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *