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 đó.

dataset to Add a Dynamic and Dependent Combo Box Using Excel VBA

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).

select userform to Add a Dynamic and Dependent ComboBox Using Excel VBA

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.

select properties from the context menu

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 LabelCombo Box từ Toolbox.

Add a lebel and Dependent ComboBox Using Excel VBA

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.

change the font color and other properties

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.

final output to demonstrate how to Add a Dynamic and Dependent ComboBox Using Excel VBA

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.

click on Activate option

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.

show the output

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.

Add a Dynamic and Dependent ComboBox

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).

insert new column in dataset to demonstrate how to Add a Dynamic and Dependent ComboBox

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 

 

Tags