Tạo Combobox nhiều cột trong UserForm VBA Excel

Thường, có lẽ bạn vẫn hay thấy Combobox chứa danh sách có 1 cột duy nhất. Nhưng, bạn có biết là có thể tạo Combobox với nhiều hơn 1 cột khi sử dụng trong UserForm VBA Excel hay không?

Combobox nhiều cột sẽ giúp bạn thể hiện nội dung danh sách các lựa chọn được cụ thể chi tiết hơn rất nhiều. Vì thế ở bài này, mình sẽ chia sẻ với bạn cách đơn giản nhất để tạo Combobox có nhiều cột trong UserForm VBA Excel.

Tạo Combobox nhiều cột trong UserForm VBA

Trước khi bắt đầu, nếu bạn chưa biết cách tạo và sử dụng Userform trong VBA Excel, bạn hãy tham khảo bài viết Cách sử dụng UserForm trong VBA trước đã nha.

Ở đây, ví dụ tạo Combobox nhiều cột, mình sẽ tạo 1 UserForm. Trong đó bao gồm: 1 Combobox và 3 Textbox.

Combobox nhiều cột trong UserForm VBA Excel

Tiếp theo, chúng ta sẽ tiến hành khởi tạo danh sách nhiều cột cho Combobox.

Bạn hãy tạo hàm UserForm_Initialize() và tham khảo cách khởi tạo dữ liệu cho Combobox nhiều cột như sau:

Private Sub UserForm_Initialize() ComboBox1.ColumnCount = 3 Dim fruits(1 To 5, 1 To 3) As String Dim i As Integer, j As Integer fruits(1, 1) = "Avocado : Bo" fruits(1, 2) = "KG" fruits(1, 3) = 30000 fruits(2, 1) = "Mango : Xoai" fruits(2, 2) = "KG" fruits(2, 3) = 25000 fruits(3, 1) = "Kumquat : Quat" fruits(3, 2) = "KG" fruits(3, 3) = 10000 fruits(4, 1) = "Apricot : Mo" fruits(4, 2) = "KG" fruits(4, 3) = 50000 fruits(5, 1) = "Rambutan : Chom Chom" fruits(5, 2) = "KG" fruits(5, 3) = 25000 ComboBox1.List = fruits End Sub
Code language: VB.NET (vbnet)

Trong hàm trên, bạn hãy xem xét các lệnh sau:

  • ComboBox1.ColumnCount = 3 : khai báo Combobox có 3 cột.
  • Dim fruits(1 To 5, 1 To 3) As String: khai bảo mảng 2 chiều 5 x 3. Tương ứng với 5 hàng, 3 cột.
  • ComboBox1.List = fruits: gán mảng vào Combobox.

Hoàn thành hàm như trên, bây giờ bạn có thể thử chạy UserForm để xem kết quả.

Combobbox 3 Columns UserForm

Đọc giá trị các cột được chọn trong Combobox

Tạo được Combobox với 3 cột. Tiếp theo, làm sao để lấy giá trị các cột theo hàng được chọn?

Bạn thấy trong hàm khởi tạo mảng cho Combobox, mỗi hàng có 3 cột được thêm vào.

Như vậy, khi lấy giá trị từ Combobox theo hàng được chọn. Bạn chỉ cần lấy theo Column(0) tương ứng với cột 1, Column(1) tương ứng với cột 2 của mảng…

Và, bạn có thể bắt sự kiện Change của Combobox để ghi giá trị của hàng ra các Textbox như sau.

Private Sub ComboBox1_Change() On Error Resume Next TextBox1.Text = ComboBox1.Column(0) TextBox2.Text = ComboBox1.Column(1) TextBox3.Text = ComboBox1.Column(2) End Sub
Code language: VB.NET (vbnet)

Hoàn thành hàm trên, bạn hãy chạy UserForm. Khi lựa chọn 1 hàng trong Combobox, thì các giá trị tương ứng với cột cũng sẽ được ghi ra Textbox.

Lấy giá trị từ Combobox VBA Excel

Kết luận

Cách trên là cách đơn giản để bạn tạo được 1 Combobx nhiều cột trong UserForm VBA Excel. Bạn có thể tùy biến nâng cao hơn bằng cách đọc và gán vào Combobox từ bảng đã xác định trong bảng tính Excel.

Chúc bạn vui!

BÌNH LUẬN

Please enter your comment!
Please enter your name here