Last active
March 23, 2018 02:46
-
-
Save DuongAQ/c49e0d758f180f2d99c9254e938a8b38 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 ComboBox1_Change() 'Sự kiện thay đổi danh sách 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("A2", ws.Range("A" & Rows.Count).End(xlUp)) 'Vùng danh sách gốc ở cột A, từ ô A2 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 = ComboBox1 Then 'Nếu giá trị trong danh sách bậc 1 trùng với giá trị đã chọn ở ComboBox1 | |
Dic(r.Offset(, 1).Value) = Empty 'Những giá trị nào trùng lặp ở cột danh sách bậc 2 sẽ bị loại bỏ (DS bậc 2 cách DS bậc 1 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 1 | |
'Lấy các kết quả còn lại trong dictionary vào ComboBox2 | |
With ComboBox2 | |
.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