Trong bài trước chúng ta đã tìm hiểu về cách sử dụng ComboBox và tạo danh sách không bị trùng trong Combobox. Và để nâng cao hơn kiến thức về Combobox, chúng ta cùng tìm hiểu cách tạo ra những Combobox có danh sách phụ thuộc nhau. Điều này nghĩa là: Mỗi giá trị được chọn ở Combobox này sẽ làm thay đổi danh sách nạp vào ở Combobox khác.
Những nội dung chúng ta cần tìm hiểu trong bài học này bao gồm:
Xem nhanh
Để hình dung về cấp bậc các danh sách, chúng ta xét ví dụ sau:
Trong hình trên chúng ta thấy: Mỗi nhân viên tại cột C sẽ nằm trong 1 nhóm cụ thể trong cột B, và mỗi nhóm lại thuộc một bộ phận nhất định trong cột A.
Như vậy có sự phân cấp bậc các danh sách như sau:
Bộ phận > Nhóm > Nhân viên
Vậy mục tiêu chúng ta cần đạt được là:
Ở đây chúng ta có 3 danh sách nên sẽ cần tạo 3 combobox có tên lần lượt là Combobox1, Combobox2, Combobox3
Chúng ta sẽ sắp xếp thứ tự các combobox lần lượt như sau:
Combobox1 sẽ lấy danh sách Bộ phận
Combobox2 sẽ lấy danh sách Nhóm
Combobox3 sẽ lấy danh sách Nhân viên
Ở các danh sách Bộ phận và Nhóm chúng ta thấy có xuất hiện các giá trị trùng nhau. Do đó để cho danh sách chọn của combobox không xuất hiện các giá trị trùng này thì chúng ta có thể áp dụng cách làm tương tự ở bài trước để thực hiện.
Tạo danh sách không trùng trong Combobox1:
Từ các combobox2 và combobox3 chúng ta thấy nó phụ thuộc vào nội dung của combobox bậc trước nó, do đó chúng ta sẽ kết hợp việc tạo điều kiện phụ thuộc với việc lọc các giá trị trùng.
Như đã lập luận ở trên: “Với mỗi bộ phận được chọn trong Combobox1 thì danh sách nhóm trong Combobox2 cần phải thay đổi tương ứng theo bộ phận đó” => Như vậy việc thay đổi danh sách chọn trong combobox2 phụ thuộc vào việc nội dung trong combobox1 có thay đổi hay không. Điều này trong VBA được gọi là sự kiện Combobox1_Change
Tại Sheet chứa các combobox cần thực hiện (ở đây là Sheet3) chọn đối tượng Combobox thay cho Worksheet, tiếp đó chọn sự kiện Change cho combobox đó (sự kiện Change sẽ là mặc định khi chọn đối tượng Combobox)
Câu lệnh VBA được viết như sau:
Như vậy chúng ta đã có thể tạo được danh sách tại ComboBox2 phụ thuộc vào mỗi giá trị được chọn tại Combobox1 rồi.
Tiếp theo là để ComboBox3 phụ thuộc vào ComboBox2 thì chúng ta làm như sau:
Câu lệnh VBA như sau (những nội dung thay đổi cần chú ý được đặt trong phần dấu ***)
Như vậy chúng ta đã hoàn thành được yêu cầu ban đầu rồi.
Một lưu ý là trong ComboBox đôi khi bị lỗi font chữ khi chúng ta chọn 1 giá trị tiếng việt có dấu. Để khắc phục điều này thì chúng ta có thể có 1 số cách sau:
Cảm ơn các bạn đã theo dõi bài viết, mong rằng bạn đã nắm được cách tạo Combobox phụ thuộc rồi. Chúc các bạn học tốt cùng Học Excel Online!