Combo Box là một danh sách thả xuống bằng cách kết hợp một hộp văn bản cụ thể. Danh sách thả xuống này sẽ cho phép người dùng chọn tùy chọn tùy thích. Trong bài viết này, UniTrain sẽ hướng bạn cách thêm Combo Box trong Excel bằng VBA chỉ với 3 bước vô cùng đơn giản.
Người dùng có thể dễ dàng tạo Combo Box ActiveX Controls bằng Excel VBA. Giả sử, có tập dữ liệu gồm hai cột: Days (ngày) và Months (tháng) như hình dưới. Ở đây, người dùng sẽ trình bày hai Combox Box, và Combox Box thứ hai sẽ phụ thuộc vào Combo Box thứ nhất. Đầu tiên, người dùng sẽ chọn danh mục trong Combo Box 1 và Combox 2, sau đó sẽ nhận được các tùy chọn trong hộp đó.
Các bước thao tác:
Bước 1: Chèn Userform trong cửa sổ VBA
1. Chọn Developer > tùy chọn Visual Basic từ nhóm Code.
2. Cửa sổ VBA sẽ hiển ra.
3. Để tạo Combo Box, chúng ta sẽ cần sử dụng tính năng UserForm. Do đó, hãy chọn Insert > tùy chọn UserForm (như hình dưới).
4. Userform sẽ xuất hiện cùng với Toolbox.
5. Nhấn nút bên phải của chuột giữ con trỏ trên UserForm. Chọn Context Menu > tùy chọn Properties.
6. Từ cửa sổ Properties, chọn mục Caption (như hình dưới). Đây là tiêu đề của UserForm.
Bước 2: Tạo Label và Combo Box
1. Thêm Label và Combo Box từ Toolbox.
2. Sao chép các ô đó bằng Ctrl+C và dán bằng cách nhấn Ctrl+V.
3. Di chuyển con trỏ trên bất kỳ Label nào và nhấn nút bên phải.
4. Chọn Context Menu > tùy chọn Properties.
5. Trong cửa sổ Properties, bạn có thể thay đổi tên, màu phông chữ, kích thước và những thứ khác.
6. Sau khi thay đổi các thuộc tính, Userform sẽ hiển thị (như hình dưới). Sau đó, hãy nhấn tùy chọn chạy từ tab chính.
Và cuối cùng, kết quả sẽ hiển thị như sau:
Bước 3: Thêm mã VBA
1. Nhấp đúp vào Userform và nhập cửa sổ VBA để viết mã code.
2. Trong cửa sổ, hãy chọn mũi tên ở phía bên phải (như hình dưới) và chọn tùy chọn Activate trong danh sách dưới.
3. Lúc này, mã sẽ được thêm vào cửa sổ để kích hoạt Userform.
4. Xóa mã Userform khỏi cửa sổ VBA.
5. Nhập mã code dưới đây vào cửa sổ:
Private Sub UserForm_Activate()
Dim D_Sheet As Worksheet
Set D_Sheet = ThisWorkbook.Sheets("Dependent & Dynamic Combo Box")
Dim N As Integer
Me.ComboBox1.Clear
For N = 1 To Application.WorksheetFunction.CountA(D_Sheet.Range("1:1"))
Me.ComboBox1.AddItem D_Sheet.Cells(1, N).Value
Next N
End Sub
6. Kiểm tra kết quả bằng cách nhấp vào mũi tên xuống của hộp Category và xem các tùy chọn. Tương tự, nhấp vào mũi tên xuống của hộp Options.
7. Bạn sẽ thấy hộp Options bị trống. Ngược lại, hộp Category thì không.
8. Nhấp đúp vào ComboxBox1.
9. Sao chép mã VBA khác và dán vào cửa sổ:
Private Sub ComboBox1_Change()
Dim D_Sheet As Worksheet
Set D_Sheet = ThisWorkbook.Sheets("Dependent & Dynamic Combo Box")
Dim N, M As Integer
M = Application.WorksheetFunction.Match(Me.ComboBox1.Value, D_Sheet.Range("1:1"), 0)
Me.ComboBox2.Clear
For N = 2 To Application.WorksheetFunction.CountA(D_Sheet.Cells(1, M).EntireColumn)
Me.ComboBox2.AddItem D_Sheet.Cells(N, M).Value
Next N
End Sub
10. Chạy mã VBA bằng cách nhấn nút F5.
11. Bạn có thể thấy hộp Options đang hoạt động trở lại. Có nghĩa là hộp Options này phụ thuộc với hộp còn lại.
12. Để làm hộp linh động hơn, bạn có thể thêm một cột khác vào tập dữ liệu (như hình dưới).
13. Chọn UserForm, bạn có thể thấy cột mới được thêm vào hộp tổ hợp.
Xem thêm
Khóa học Ứng dụng VBA trong Excel
Bộ tài liệu: Làm chủ Excel và VBA-Macro
Download: Excel VBA Notes for Professionals
VBA trong Excel giúp ích gì cho công việc của bạn?
VBA – các tính năng hỗ trợ trong Excel