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
Ứng dụng hàm TEXTJOIN nâng cao trong Excel

1. Giới thiệu hàm TEXTJOIN và IF  Hàm TEXTJOIN trong Excel giúp nối các giá trị từ một phạm vi hoặc danh sách các ô, sử dụng dấu phân cách tùy

Xem thêm
30 tháng Tư rực rỡ, 1/5 ưu đãi bất ngờ

Mừng 50 năm thống nhất Đất nước, UniTrain ưu đãi đến 2.500.000 VNĐ trên học phí gốc cho học viên đăng ký các khóa combo. CÁC COMBO KHÓA HỌC ÁP DỤNG

Xem thêm
Nối các mảng dữ liệu trong Python

Trong quá trình xử lý dữ liệu với pandas, việc kết hợp nhiều bảng dữ liệu là thao tác rất phổ biến. Hàm concat() chính là công cụ mạnh mẽ giúp

Xem thêm
Phân biệt WHERE và HAVING trong SQL

Trong SQL, lọc dữ liệu là một bước quan trọng giúp truy vấn trả về kết quả chính xác và tối ưu hơn. Hai mệnh đề thường được sử dụng để

Xem thêm