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
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).