Bài viết: Tạo ứng dụng form hổ trợ tìm kiếm và nhập liệu

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Trước đây tôi có làm 1 form hổ trợ tìm kiếm và nhập liệu. Việc tìm kiếm thì dùng AutoFilter, còn sort dữ liệu trên ListBox thì đương nhiên dùng chức năng Sort sẳn có của Excel để làm: Sort trên bảng tính, xong gán dữ liệu từ bảng tính vào ListBox

Cảm thấy cách làm đó tuy đơn giản nhưng không mấy chuyên nghiệp, vả lại tốc độ xử lý cũng không cao!
Như ta đã biết, việc Filter đối với mảng 1 chiều thì đã có hàm Filter giải quyết. Vậy hôm nay tôi viết thêm hàm Filter2DArray nữa là có thể đưa vào ứng dụng với form hổ trợ tìm kiếm và nhập liệu rồi.

Hàm Filter2DArray như sau:

PHP:
Function Filter2DArray(sArray, ColIndex As Long, FindStr As String)
  Dim TmpArr, i As Long, j As Long, Arr, Dic, TmpStr, Tmp
  Set Dic = CreateObject("Scripting.Dictionary")
  TmpArr = sArray
  ColIndex = ColIndex + LBound(TmpArr, 2) - 1
  For i = LBound(TmpArr, 1) To UBound(TmpArr, 1)
    TmpStr = Left(TmpArr(i, ColIndex), Len(FindStr))
    If UCase(TmpStr) = UCase(FindStr) Then Dic.Add i, ""
  Next
  If Dic.Count > 0 Then
    Tmp = Dic.Keys
    ReDim Arr(UBound(Tmp), LBound(TmpArr, 2) To UBound(TmpArr, 2))
    For i = LBound(Tmp) To UBound(Tmp)
      For j = LBound(TmpArr, 2) To UBound(TmpArr, 2)
        Arr(i, j) = TmpArr(Tmp(i), j)
      Next
    Next
  End If
  Filter2DArray = Arr
End Function
Vẫn sử dụng sự trợ giúp của Dictionary Object để định vị chỉ số dòng cần lấy ra kết quả
Giao diện Form như sau:

msrTzVctb1zQrJSihPNX51zGkReq6UE4R3VSTUidSqh7TQWNM3NgsBfD1h2Pn6jgGOs9ntx1pL-I_URKRnrIIN46vVp8PDTVC8gUt3duGGKv8HjivvHHMwcWVaGnir-gA5BHt8eAuta_e7DvNwD04zn1B_c_GQbsLagVg8Dgcyf8XYvVQ_vv9OTIkFH2SWi-qlJOyBN0kyt_HhGGGnwswVba52Oqn7MdjzWc5ufdA1uFUUzxNn9SJ69fo2o7CI3hTp7eQ_NlV99kmfqVpy0-JrxaQq1jQwqVmbdAjdFaVhoiELD4VbEFqPQasjkaBGdnfs-odDNAy9bcr5A6qh22ghZfMhU5MPZYP5AbgVecqjAWA5IqyKycrKk3ZieaosVIAA_xhpSD1gpRKUXo5274YasucBQFRQS7BiwuSwSrX7258oLjNRrbKkhMsK93eWdImHhg0TmnNywflmLzRUcqvO6Ij_O0aFoaNVryRGMV1S1EUlJDt1kEyl2s29w4sY4rRr-wI75R5XlP2EpHNuAkAqhUPA12TCmi0TN7G3kXQn2twNLNzjzSPrUz4ysScsfSvcLWbHGh9AwZenFA7wlS74xtuBQ6EsHCZFDvmRqkOvraoOFEgas=w513-h402-no


Với form này thì:
- Khi bấm vào các tiêu đề của ListBox thì dữ liệu sẽ được sort đúng tại cột này
- Gõ vài ký tự gợi nhớ vào TextBox thì List sẽ được thu gọn lại đúng với từ khóa tìm kiếm trên cột mà trước đó ta đã bấm (tức có thể tìm kiếm trên từng cột)
- Double Click vào 1 dòng nào đó trên ListBox, đồng nghĩa sẽ gán dữ liệu xuống bảng tính


Bạn có thể tham khảo và thảo luận thêm tại topic này: http://www.giaiphapexcel.com/forum/showthread.php?47929-Sort-mảng-2-chiều

Một số bài viết có liên quan:
1/ Làm cách nào để ghi chú hiệu quả trong VBA?
2/ Conditional Formatting cho biểu đồ bằng VBA
3/ Khi nào nên sử dụng Msgbox, Inputbox và Userform?
4/ 8 thủ thuật trong VBE bạn nên biết
5/ Kích hoạt macro từ nút bấm ngoài bảng tính
6/ Làm thế nào để thay thế các chữ OK, CANCEL,... nhàm chán của Msgbox
7/ Giới thiệu VBA trong Excel
8/ Viết code để nhìn thấy ai là người cập nhật bảng tính của bạn lần gần đây nhất
9/ 4 cách sử dụng Immediate Window trong VBA hiệu quả hơn
10/ 3 gợi ý nhỏ mang lại thành công trong khai báo biến trong VBA
 

File đính kèm

  • mc_request_05.rar
    32.6 KB · Đọc: 511
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
có anh chị nào hướng dẫn chi tiết mục này với ạ
 
Em làm theo và bị lỗi 380...mong anh chị giúp đỡ
 

File đính kèm

  • FORM 123.xlsm
    34.4 KB · Đọc: 34
Cái này có cách nào search được rộng hơn ko nhỉ ? Hiện nay phải gõ ký tự đầu đến cuối nó mới tìm được
 
Web KT
Back
Top Bottom