Lập trình Userform-VBA tạo mục nhập có danh sách tìm kiếm với BSSearchEngine - Add-in A-Tools v10.1 (2 người xem)

Người dùng đang xem chủ đề này

  • Nguyễn Duy Tuân

    Nghị Hách
    Thành viên danh dự
    Tham gia
    13/6/06
    Bài viết
    4,891
    Được thích
    10,364
    Giới tính
    Nam
    Nghề nghiệp
    Giáo viên, CEO tại Bluesofts
    Nhập liệu nâng cao trong Add-in A-Tools cho phép tìm và lọc trên sheet. Từ phiên bản v10.1 cho phép người dùng lập trình với class BSSearchEngine để tạo cửa sổ tìm kiếm này với điều khiển - control trên Userform. Tốc độ nhanh dù hàng trăm ngàn dòng. BSSearchEngine cung cấp phong phú các thủ tục, thuộc tính, sự kiện để tùy biến giao diện và hành động.

    Khi cài A-Tools bạn mở tập tin tại đường dẫn dưới đây để xem mã nguồn ví dụ đầy đủ:

    (*) File mã nguồn ví dụ: "C:\A-Tools\HELP & DEMOS\A-Tools VBA Programming\BSSearchEngine - Create DropDown List on control\BSSearchEngine - DropDown List.xlsm"

    Chủ đề này tôi sẽ hướng dẫn từng bước lập trình từ cơ bản đến nâng cao với BSSearchEngine để tạo tính năng tìm và lọc với control trên Userform giống như chức năng Nhập liệu nâng cao trên sheet.

    Video phần 01 - Tạo mục tìm và lọc đơn giản


    Dòng lệnh tối thiểu để tạo cửa sổ tìm và lọc với control (các code trong chủ đề này là ngôn ngữ VBA, dùng định dạng C# để hình thức đẹp hơn)

    +Bước 1: Nhúng thư viện AddinATools.dll

    Trong cửa sổ lập trình VBA, chọn Project bạn muốn lập trình, vào menu Tools -> References... tick chọn "AddinATools.dll"

    + Bước 2: Tạo Userform và chèn một control TextBox

    Control phục vụ để nhập liệu là TextBox. Bạn có thể sử dụng các control ComboBox, BSEdit hoặc control nào cho phép nhập liệu.

    BSSearchEngine-Userform1.png

    Nhấp đúp chuột vào Userform - Vào chế độ soạn thảo code trong Userform. Copy đoạn code dưới đây dán vào.

    C#:
    Private WithEvents SE_MAHH As BSSearchEngine
    
    Private Sub UserForm_Initialize()
        Set SE_MAHH = New BSSearchEngine
        SE_MAHH.Create txtMAHH, Range("DMHH")
        SE_MAHH.BoundColumn = 1 'Ngầm định là 1 - Chỉ ra vị trí cột giá trị lấy về control
        'EditControl: TextBox, ComboBox, BSEdit, Handle to Edit
        'DataSource: Excel Range (high speed!)
        '            Array2D
        '            ADODB.Recordset
    End Sub
    
    'Sự kiện nhận giá trị chọn từ danh sách. Lấy giá trị trong mảng điền vào các control khác.
    Private Sub SE_MAHH_OnAfterUpdate(RowIndex As Variant, Values As Variant, ByVal Text As String)
        lblTenHH.Caption = Values(1, 2) 'Tên hàng
        txtDVT.Text = Values(1, 4) 'Đơn vị tính
    End Sub

    Sự kiện OnAfterUpdate() chạy ngay sau khi giá trị được cập nhật vào control.

    Kết quả khi chạy

    nhaplieunangcao-vba.png

    Bài viết tiếp theo tôi sẽ thêm ví dụ và giải thích thêm...
     
    Lần chỉnh sửa cuối:

    Bài viết mới nhất

    Back
    Top Bottom