Bùi Thanh Liêm
Bùi Thanh Liêm
Thảo luận 1 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 18 lượt xem

Tạo ô tìm kiếm

Câu hỏi: trong userform có thể tạo ô tìm kiếm nhanh sort 1 lúc nhiều mã hàng hóa không? Nếu có xin hãy viết doạn code ví dụ 

xin cảm ơn

Thảo luận 1 câu trả lời
Lượt xem 18 lượt xem
Vỗ tay vỗ tay
Bùi Thanh Liêm 15:01 - Jan 30, 2024

Dạ vâng Gitiho xin gửi thông tin đến Anh/Chị ạ:

Anh/Chị có thể tạo ô tìm kiếm nhanh trong UserForm của VBA và thực hiện việc sắp xếp nhiều mã hàng hóa một lúc. Dưới đây là một đoạn mã VBA minh họa:

Option Explicit

Private Sub UserForm_Initialize()
   ' Khởi tạo UserForm
   ' (Anh/Chị có thể thêm dữ liệu từ nguồn dữ liệu của mình vào ListBox)
   ListBox1.AddItem "Mã Hàng Hóa 1"
   ListBox1.AddItem "Mã Hàng Hóa 2"
   ListBox1.AddItem "Mã Hàng Hóa 3"
   ' Thêm các mã hàng hóa khác tương ứng
   
   ' Thiết lập giá trị mặc định cho TextBox tìm kiếm
   TextBoxSearch.Value = ""
End Sub

Private Sub TextBoxSearch_Change()
   ' Xử lý sự kiện khi giá trị trong TextBox tìm kiếm thay đổi
   Dim searchText As String
   Dim i As Integer
   
   searchText = UCase(TextBoxSearch.Value) ' Chuyển đổi về chữ hoa để tìm kiếm không phân biệt chữ hoa/chữ thường
   
   ' Xóa toàn bộ mục trong ListBox
   ListBox1.Clear
   
   ' Hiển thị lại các mục thỏa mãn điều kiện tìm kiếm
   For i = 0 To ListBox1.ListCount - 1
       If InStr(1, UCase(ListBox1.List(i)), searchText) > 0 Then
           ListBox1.AddItem ListBox1.List(i)
       End If
   Next i
End Sub

Private Sub CommandButtonSort_Click()
   ' Xử lý sự kiện khi nút sắp xếp được nhấn
   ' (Anh/Chị có thể thêm mã lệnh sắp xếp dựa trên các mã hàng hóa trong ListBox)
   ' Ví dụ: sắp xếp theo bảng chữ cái
   ListBox1.List = SortArray(ListBox1.List)
End Sub

Function SortArray(arr() As Variant) As Variant
   ' Hàm sắp xếp một mảng
   Dim i As Long, j As Long
   Dim temp As Variant
   
   For i = LBound(arr) To UBound(arr) - 1
       For j = i + 1 To UBound(arr)
           If arr(i) > arr(j) Then
               ' Hoán đổi giá trị nếu cần thiết
               temp = arr(i)
               arr(i) = arr(j)
               arr(j) = temp
           End If
       Next j
   Next i
   
   SortArray = arr
End Function
 

Trong mã trên:

- `UserForm_Initialize`: Khởi tạo UserForm và thêm một số mã hàng hóa vào ListBox.

- `TextBoxSearch_Change`: Xử lý sự kiện khi giá trị trong TextBox tìm kiếm thay đổi. Nó sẽ lọc ListBox dựa trên giá trị tìm kiếm.

- `CommandButtonSort_Click`: Xử lý sự kiện khi nút sắp xếp được nhấn. Anh/Chị có thể thay đổi logic sắp xếp tùy thuộc vào yêu cầu của Anh/Chị .

- `SortArray`: Hàm sắp xếp một mảng (được sử dụng để sắp xếp các mã hàng hóa trong ListBox).

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông