vanhesing
Thành viên thường trực
- Tham gia
- 12/8/10
- Bài viết
- 223
- Được thích
- 30
Chọn để làm gì, không lẽ chọn xong để xem chơi.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
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.Chọn để làm gì, không lẽ chọn xong để xem chơi.
Thử thêm đoạn code này vào Form xem sao.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
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
Anh thấy dùng ComboBox1_Change code sẽ gọn hơnThử thêm đoạn code này vào Form xem sao.
Private Sub ComboBox1_Change()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = True
Next i
End Sub
Cảm ơn Anh.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
Thanks AnhAnh 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á).
Vậy sửa lại thế này xem sao.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 .
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
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