Hướng dẫn tạo danh sách không có giá trị trùng trong combobox

Làm thế nào để tạo danh sách không có giá trị trùng trong combobox. Hãy đọc bài viết dưới đây do eLib biên soạn để tìm cho mình được câu trả lời chính xác nhất nhé.

 

Hướng dẫn tạo danh sách không có giá trị trùng trong combobox

1. Đặt vấn đề

Xét trường hợp sau:

Danh sách nhân viên

Chúng ta có 1 danh sách nhân viên trong công ty được phân thành các bộ phận, các nhóm. Ở cột Bộ phận và cột Nhóm có các nội dung được lặp lại. Chúng ta muốn tạo combo box mà danh sách chọn cho Bộ phận, Nhóm là các giá trị không trùng.

Danh sách chọn ở Bộ phận bao gồm:

  • Kinh doanh
  • Kế toán
  • Bán hàng

Danh sách chọn ở Nhóm bao gồm:

  • Team A
  • Team B
  • Team C
  • Team D
  • Team E
  • Team F

2. Cách thực hiện

2.1. Tạo Combo box

Để tạo ra 1 combo box, chúng ta cần vào tab Developer > Insert > Combobox (ActiveX Control)

Developer > Insert > Combobox (ActiveX Control)

Sau đó chúng ta vẽ ra trong Sheet 1 Combo Box, có thể đặt ở bất kỳ sheet nào. Trong ví dụ này chúng ta sẽ đặt tại Sheet1 – là nơi chứa danh sách cần nạp cho Combo Box để dễ hình dung.

Sau khi tạo ra Combo Box, chúng ta tìm hiểu một số thiết lập cơ bản trong Combo box bằng cách click chuột phải vào combobox và chọn Properties

Combox vừa tạo

Trong cửa sổ Properties chú ý những nội dung sau:

Cửa sổ Properties

ListFillRange : danh sách làm nguồn cho Combobox

LinkedCell : ô liên kết từ combobox để ghi nhận kết quả nội dung được chọn bởi combobox

ColumnsCount : số lượng cột trong combobox (phụ thuộc vào ListFillRange có bao nhiêu cột)

ColumnsWidths : phân chia độ rộng từng cột dựa theo việc có bao nhiêu cột

BoundColumn : cột nào sẽ là cột kết quả cần lấy trong trường hợp có nhiều cột

Ví dụ chúng ta thiết lập combobox gồm 3 cột, lấy theo vùng bảng A2:C10, độ rộng mỗi cột tương ứng là 50-50-80pt, kết quả lấy theo cột thứ 1, nội dung được chọn sẽ liên kết tới ô E2:

Thiết lập combobox gồm 3 cột

2.2. Tạo Combobox với danh sách không trùng

Cách thủ công bằng thao tác tay

Bước 1: Copy nội dung cột Bộ phận ra cột F

Bước 2: Thực hiện việc loại bỏ các giá trị trùng tại cột F bằng chức năng Data / Remove Duplicates

Loại bỏ các giá trị trùng tại cột F

Kết quả sau khi thực hiện thao tác Remove Dupplicates như sau:

Như vậy các giá trị trùng đã được bỏ đi, chỉ còn lại 3 nội dung.

Chúng ta sẽ nạp danh sách từ ô F2 tới ô F4 tương ứng với 3 nội dung này vào trong combo box mục ListFillRange

Tuy nhiên cách này khả thủ công bởi khi nhập thêm dữ liệu vào bảng thì chúng ta phải lặp lại thao tác RemoveDuplicates, nếu không dữ liệu trong danh sách sẽ không được cập nhật.

Sử dụng VBA để tạo List cho Combobox

Câu lệnh VBA được diễn đạt như sau:

Gắn với sự kiện Worksheet_Active (mỗi khi sheet chứa combobox được chọn) sẽ cập nhật lại danh sách trong combobox

Private Sub Worksheet_Activate() 'Lấy danh sách không trùng vào ComboBox
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 trong danh sách gốc
Dim Dic As Object 'Tạo biế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
Set rng = ws.Range("A2", ws.Range("A" & Rows.Count).End(xlUp)) 'Vùng danh sách gốc nằm ở cột A, bắt đầu từ ô A2
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 dic
For Each r In rng
Dic(r.Value) = Empty 'Các giá trị trùng sẽ được bỏ đi
Next
With ComboBox1
.ListFillRange = "" 'Xóa danh sách cũ đã có trước đó
If .ListCount = 0 Then 'Thực hiện việc nạp danh sách mới
.List = Application.Transpose(Dic.keys) 'Lấy kết quả còn lại ở Dic vào Danh sách chọn của combobox1
.ListIndex = 0
End If
End With
End Sub

Kết quả thu được như sau:

Kết quả

Như vậy bạn đã có thể hiểu rõ hơn về đối tượng ComboBox và cách tạo danh sách chọn cho Combobox rồi phải không nào. Đặc biệt là chúng ta còn có thể sử dụng VBA để tạo danh sách không trùng, có thể tự động cập nhật lại danh sách mỗi khi chúng ta làm việc. Điều này thật thú ví đúng không. Chúc các bạn thành công!

Ngày:13/08/2020 Chia sẻ bởi:Nhi

CÓ THỂ BẠN QUAN TÂM