Cách thêm Combo Box trong Excel bằng VBA

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 

 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

1 + 1 = ? (Nhập Haii để trả lời đúng)

Bài viết liên quan
[HOẠT ĐỘNG CỘNG ĐỒNG] Cuộc thi Financial Student Contest (FSC) mùa 13 – CLB Tài chính – Chứng khoán (SeSC) – Đại học Ngoại Thương CSII TP. HCM (FTU2)

Chiều tối ngày 13/06/2025, Chung kết cuộc thi Financial Student Contest (FSC) mùa 13 do CLB Tài chính – Chứng khoán (SeSC) thuộc Đại học Ngoại Thương CSII TP. HCM (FTU2)

Xem thêm
[HOẠT ĐỘNG CỘNG ĐỒNG] Cuộc thi myInsight – MDS Datathon Challenge 2025 – CLB Toán ứng dụng & Khoa học dữ liệu (MDS) – CSII Đại học Ngoại Thương TP. HCM (FTU2)

Chiều ngày 08/06/2025 vừa qua, cuộc thi myInsight – MDS Datarthon Challenge 2025 đã chính thức tiến đến vòng chung kết dưới sự góp mặt của top 5 đội thi xuất

Xem thêm
Cảm nhận học viên khóa Excel for Analysts

“Mình rất hài lòng về tính ứng dụng thực tế và khả năng nâng cao hiệu quả công việc của khóa học.” Anh Nguyễn Trung Hòa – nhân sự ngành Kế

Xem thêm
Một số hàm sắp xếp (Sort) phổ biến trong Numpy

Sắp xếp (Sort) là một thao tác phổ biến trong phân tích dữ liệu và lập trình. Nó liên quan đến việc sắp xếp các phần tử trong một tập hợp theo

Xem thêm