Thông thường, bạn vẫn có thể thấy Combobox chứa các danh sách chỉ có 1 cột. Nhưng, bạn có biết rằng có thể tạo Hộp tổ hợp có nhiều hơn 1 cột khi sử dụng trong Excel VBA UserForm hay không?
Combobox nhiều cột sẽ giúp bạn hiển thị nội dung của danh sách các tùy chọn chi tiết hơn rất nhiều. Vì vậy, trong bài viết này, tôi sẽ chia sẻ với các bạn cách đơn giản nhất để tạo Combobox với nhiều cột trong UserForm VBA Excel.
Tạo một hộp tổ hợp 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 Excel VBA thì hãy tham khảo bài viết Hướng dẫn sử dụng UserForm trong VBA trước nhé.
Đây, ví dụ tạo Combobox nhiều cột, Tôi sẽ tạo một UserForm. Trong đó bao gồm: 1 Combobox và 3 Textbox.
Tiếp theo, chúng ta sẽ tiến hành bắt đầu tạo danh sách nhiều cột cho Combobox.
Hãy tạo một chức năng 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, hãy xem xét các lệnh sau:
- ComboBox1.ColumnCount = 3 : khai báo Combobox gồm 3 cột.
- Làm mờ trái cây (1 đến 5, 1 đến 3) dưới dạng chuỗi: khai báo mảng 2 chiều 5 x 3. Tương ứng với 5 hàng, 3 cột.
- ComboBox1.List = trái cây: gán mảng cho Combobox.
Hoàn thành chức năng như trên, bây giờ bạn có thể thử chạy UserForm để xem kết quả.
Đọc giá trị của các cột đã chọn trong Combobox
Tạo Combobox gồm 3 cột. Tiếp theo, làm thế nào để nhận giá trị cột theo hàng đã chọn?
Bạn thấy trong phương thức 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 đã chọn. Bạn chỉ cần lấy nó Cột (0) tương ứng với cột 1, Cột (1) tương ứng với cột 2 của mảng…
Và, bạn có thể bắt sự kiện Thay đổi của Hộp kết hợp để ghi giá trị của hàng vào Hộp văn bản 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)
Sau khi hoàn thành chức năng trên, hãy chạy UserForm. Khi chọn một hàng trong Combobox, các giá trị tương ứng với cột cũng sẽ được ghi vào Textbox.
Sự kết luận
Trên đây là cách đơn giản để bạn tạo 1 Combobx có nhiều cột trong UserForm VBA Excel. Bạn có thể tùy chỉnh nâng cao hơn bằng cách đọc và gán cho Combobox từ bảng được chỉ định trong bảng tính Excel.
Chúc vui vẻ!