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!

1 BÌNH LUẬN

BÌNH LUẬN

Please enter your comment!
Please enter your name here