Created
March 23, 2018 03:21
-
-
Save DuongAQ/7551cc64323514633e0ceff3f5bf1dc0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Private Sub ComboBox2_Change() 'Sự kiện thay đổi danh sách tại ComboBox3 theo giá trị được chọn tại ComboBox2 | |
Dim rng As Range 'Tạo biến Vùng danh sách gốc | |
Dim r As Range 'Tạo biến để thực hiện vòng lặp giúp kiểm tra danh sách nạp vào ComboBox2 | |
Dim Dic As Object 'Tạo biến thư viện để gọi đối tượng dictionary | |
Dim ws As Worksheet ' Tạo biến Sheet chứa danh sách gốc | |
Set ws = ActiveSheet 'Sheet chứa danh sách gốc là sheet đang làm việc (khi combobox đặt trong Sheet danh sách) | |
'Nếu khác combobox đặt tại sheet khác thì cần tham chiếu tới sheet chứa danh sách gốc | |
'*** | |
Set rng = ws.Range("B2", ws.Range("B" & Rows.Count).End(xlUp)) 'Vùng danh sách gốc ở cột B, từ ô B2 tới dòng cuối có dữ liệu | |
'*** | |
Set Dic = CreateObject("scripting.dictionary") 'Thiết lập đối tượng dictionary | |
Dic.CompareMode = vbTextCompare 'Thực hiện việc so sánh các ký tự text trong thư viện dictionary | |
'Thực hiện vòng lặp để xét các nội dung được chọn ở cột danh sách bậc 1 | |
For Each r In rng 'Bắt đầu vòng lặp | |
'*** | |
If r = ComboBox2 Then 'Nếu giá trị trong danh sách bậc 1 trùng với giá trị đã chọn ở ComboBox2 | |
'*** | |
Dic(r.Offset(, 1).Value) = Empty 'Những giá trị nào trùng lặp ở cột danh sách bậc 3 sẽ bị loại bỏ (DS bậc 3 cách DS bậc 2 là 1 cột) | |
End If | |
Next 'Thực hiện vòng lặp đến hết các giá trị trong danh sách bậc 2 | |
'Khi đó những giá trị ở danh sách bậc 3 không cùng nhóm với giá trị được chọn ở danh sách bậc 2 cũng bị loại bỏ | |
'Lấy các kết quả còn lại trong dictionary vào ComboBox3 | |
'*** | |
With ComboBox3 | |
'*** | |
.List = Application.Transpose(Dic.keys) | |
.ListIndex = 0 | |
End With | |
End Sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment