Multi dữ liệu được chọn từ danh sách khác trong listbox

Liên hệ QC

vanhesing

Thành viên thường trực
Tham gia
12/8/10
Bài viết
223
Được thích
30
Kính nhờ cả nhà GPE giải giúp mình bài này.
Mình muốn chọn 01 tên ở listbox bên phải thì listbox bên trái sẽ check multi tương ứng như hình.
Mình đã làm đủ trò với listbox.selected (i) nhưng không được như mong muốn.
Chân thành cảm ơn và chúc đại gia đình GPE một buổi tối vui vẻ.


1541429644243.png
 

File đính kèm

Kính nhờ cả nhà GPE giải giúp mình bài này.
Mình muốn chọn 01 tên ở listbox bên phải thì listbox bên trái sẽ check multi tương ứng như hình.
Mình đã làm đủ trò với listbox.selected (i) nhưng không được như mong muốn.
Chân thành cảm ơn và chúc đại gia đình GPE một buổi tối vui vẻ.


View attachment 207097
Chọn để làm gì, không lẽ chọn xong để xem chơi.
 
Upvote 0
Chọn để làm gì, không lẽ chọn xong để xem chơi.
Dạ chọn để xóa, thay vì trực tiếp tại sheet có thể filter rồi load lại lên listbox, mình thao tác trên form loại bỏ data không cần thiết, và các thao tác khác đến khi data hoàn chỉnh.
 
Upvote 0
Kính nhờ cả nhà GPE giải giúp mình bài này.
Mình muốn chọn 01 tên ở listbox bên phải thì listbox bên trái sẽ check multi tương ứng như hình.
Mình đã làm đủ trò với listbox.selected (i) nhưng không được như mong muốn.
Chân thành cảm ơn và chúc đại gia đình GPE một buổi tối vui vẻ.


View attachment 207097
Thử thêm đoạn code này vào Form xem sao.
Mã:
Private Sub ListBox2_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.List(i, 2) = ListBox2.Text Then
        ListBox1.Selected(i) = True
    Else
        ListBox1.Selected(i) = False
    End If
Next
End Sub
 
Upvote 0
Thử thêm đoạn code này vào Form xem sao.
Anh thấy dùng ComboBox1_Change code sẽ gọn hơn

Mã:
Private Sub ComboBox1_Change()
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End Sub

Nhưng chủ Topic muốn chọn để xóa, thì nên dùng Filter xóa trực tiếp sẽ hay hơn là sử dụng UserForm (lòng vòng quá).
 
Lần chỉnh sửa cuối:
Upvote 0
Thử thêm đoạn code này vào Form xem sao.
Mã:
Private Sub ListBox2_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
    If ListBox1.List(i, 2) = ListBox2.Text Then
        ListBox1.Selected(i) = True
    Else
        ListBox1.Selected(i) = False
    End If
Next
End Sub
Cảm ơn Anh.
Nếu thay đổi thuộc tính multi cho listbox2, chọn 1 lúc nhiều tên thì làm thế nào ạ?
Bài đã được tự động gộp:

Anh thấy dùng ComboBox1_Change code sẽ gọn hơn

Mã:
Private Sub ComboBox1_Change()
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = True
    Next i
End Sub

Nhưng chủ Topic muốn chọn để xóa, thì nên dùng Filter xóa trực tiếp sẽ hay hơn là sử dụng UserForm (lòng vòng quá).
Thanks Anh
Em làm vậy là có mục đích. Chứ dùng autofilter xóa thì nhanh ạ, vì có thể sau các thao tác khác có nhầm lẫn sẽ cần lại dữ liệu ban đầu, hơn nữa em thấy làm các thao tác như xóa, chỉnh sửa ,.... trên from nhìn hay hơn và không phải load đi load lại sau mỗi công đoạn .
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Anh.
Nếu thay đổi thuộc tính multi cho listbox2, chọn 1 lúc nhiều tên thì làm thế nào ạ?
Bài đã được tự động gộp:


Cảm ơn Anh
Em làm vậy là có mục đích. Chứ dùng autofilter xóa thì nhanh ạ, vì có thể sau các thao tác khác có nhầm lẫn sẽ cần lại dữ liệu ban đầu, hơn nữa em thấy làm các thao tác như xóa, chỉnh sửa ,.... trên from nhìn hay hơn và không phải load đi load lại sau mỗi công đoạn .
Vậy sửa lại thế này xem sao.
Mã:
Private Sub ListBox2_Change()
Dim i As Integer, j As Integer, kt As Boolean
For i = 0 To ListBox1.ListCount - 1
    kt = False
    For j = 0 To ListBox2.ListCount - 1
        If ListBox2.Selected(j) Then
            If ListBox1.List(i, 2) = ListBox2.List(j) Then
                kt = True
                Exit For
            End If
        End If
    Next j
    If kt Then
        ListBox1.Selected(i) = True
    Else
        ListBox1.Selected(i) = False
    End If
Next
End Sub
 
Upvote 0
Vậy sửa lại thế này xem sao.
Mã:
Private Sub ListBox2_Change()
Dim i As Integer, j As Integer, kt As Boolean
For i = 0 To ListBox1.ListCount - 1
    kt = False
    For j = 0 To ListBox2.ListCount - 1
        If ListBox2.Selected(j) Then
            If ListBox1.List(i, 2) = ListBox2.List(j) Then
                kt = True
                Exit For
            End If
        End If
    Next j
    If kt Then
        ListBox1.Selected(i) = True
    Else
        ListBox1.Selected(i) = False
    End If
Next
End Sub

Cảm ơn anh, học thêm 1 bài hay về vòng lặp.
 
Upvote 0
Web KT

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

Back
Top Bottom