Sort ComboBox? (1 người xem)

  • Thread starter Thread starter jack nt
  • Ngày gửi Ngày gửi
Liên hệ QC

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

jack nt

Thành viên thường trực
Tham gia
23/12/07
Bài viết
304
Được thích
208
tui đã search trên GPE thì hình như chưa có giải pháp cho việc sort một combobox hay listbox. dưới đây là một giải pháp thay thế: thay vì tạo ra một list trong một combobox rồi sắp xếp lại, ta sắp xếp luôn khi tạo list:

thay cho việc thêm 1 item vào combobox tên là cbo bằng cbo.AddItem str
ta dùng AddItem2ComboBox cbo, str
Mã:
Public Sub AddItem2Cbo(cbo As ComboBox, str$)
    Dim i%, a$()
    For i = 0 To cbo.ListCount - 1
        If str < cbo.List(i) Then
            insertItem2Cbo cbo, a(), i, str
            Exit Sub
        End If
    Next
    cbo.AddItem str
End Sub

Private Sub insertItem2Cbo(cbo As ComboBox, a$(), index%, str$)
    Dim i%
    ReDim a(cbo.ListCount - index)
    For i = index To cbo.ListCount - 1
        a(i - index) = cbo.List(i)
    Next
    Do Until cbo.ListCount = index
        cbo.RemoveItem cbo.ListCount - 1
    Loop
    cbo.AddItem str
    For i = 0 To UBound(a) - 1
        cbo.AddItem a(i)
    Next
End Sub
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
tui đã search trên GPE thì hình như chưa có giải pháp cho việc sort một combobox hay listbox. dưới đây là một giải pháp thay thế: thay vì tạo ra một list trong một combobox rồi sắp xếp lại, ta sắp xếp luôn khi tạo list:

thay cho việc thêm 1 item vào combobox tên là cbo bằng cbo.AddItem str
ta dùng AddItem2ComboBox cbo, str

Public Sub AddItem2Cbo(cbo As ComboBox, str$)
Dim i%, a$()
For i = 0 To cbo.ListCount - 1
If str < cbo.List(i) Then
insertItem2Cbo cbo, a(), i, str
Exit Sub
End If
Next
cbo.AddItem str
End Sub

Private Sub insertItem2Cbo(cbo As ComboBox, a$(), index%, str$)
Dim i%
ReDim a(cbo.ListCount - index)
For i = index To cbo.ListCount - 1
a(i - index) = cbo.List(i)
Next
Do Until cbo.ListCount = index
cbo.RemoveItem cbo.ListCount - 1
Loop
cbo.AddItem str
For i = 0 To UBound(a) - 1
cbo.AddItem a(i)
Next
End Sub
Chưa cần kiểm tra code, chỉ kiểm tra kết quả đã thấy sai
Thí nghiệm thế này nhé:
- Gõ số 1 vào A1
- Gõ số 10 vào A2
- Xong, chạy code xem nó sort thế nào
--------------
Sort mảng 2 chiều đã nói trên diễn đàn nhiều lần rồi còn gì
 
Upvote 0
Sorry vì gửi nhầm file đính kèm, mã phía trên đã sửa lỗi rồi.
 
Upvote 0
Sorry vì gửi nhầm file đính kèm, mã phía trên đã sửa lỗi rồi.
Sửa thế nào? Bạn đưa file lên tôi kiểm tra thử
Nói chung, nếu sort thì phải:
- Sort được 2 chiều (tăng dần và giảm dần)
- Number sort kiểu khác và Text sort kiểu khác
Code trên bạn cố tình xem number là text nên mới có chuyện số 10 được xếp trước số 2
 
Upvote 0
Web KT

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

Back
Top Bottom