Thuộc tính ColumnCount của ComBoBox

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Adam_tran​

Thuộc tính ColumnCount của ComoBox cho phép hiển thị 2 cột khi RowSource có hơn 2 cột. Vật khi dùng Method AddItem, làm sao Add cả 2 cột này.
Thí dụ tôi muốn duyệt qua danh sách vật tư gồm mã và tên, tôi chỉ Add vào một số đủ điều kiện thôi. Nếu Add mã không thỉ dễ, nhưng tôi muốn Add cả tên kèm theo ở cột thứ 2.

Tương tự khi tôi muốn đề cập đến đối tượng nhóm của các item (items) trong 1 combobox thì cú pháp như thế nào? Tôi thữ code sau nhưng nó báo lỗi:

Dim Item
For each Item in ComboBox.Items
''''''''''''''''''''''''''''
Next
 
Đào Việt Cường Post :

Dear chàng adam,
-----------------
Mỗi khi gặp khó khăn như thế này, em thường hỏi bác Office Assistant. Với câu hỏi của bác thì "bác ấy" trả lời như thế này (không biết có vừa ý bác không):

Office Assistant đã viết:
Dim MyArray(6, 3)
____________________________
Private Sub UserForm_Initialize()
Dim i As Single
'Box contains 6 data columns
ComboBox1.ColumnCount = 6
'Load integer values into first column of MyArray
For i = 0 To 5
MyArray(i, 0) = i
Next i
'Load columns 2 and three of MyArray
MyArray(0, 1) = "Zero"
MyArray(1, 1) = "One"
MyArray(2, 1) = "Two"
MyArray(3, 1) = "Three"
MyArray(4, 1) = "Four"
MyArray(5, 1) = "Five"
MyArray(0, 2) = "Zero"
MyArray(1, 2) = "Un ou Une"
MyArray(2, 2) = "Deux"
MyArray(3, 2) = "Trois"
MyArray(4, 2) = "Quatre"
MyArray(5, 2) = "Cinq"
'Load data into ComboBox1 and ListBox2
ComboBox1.Column() = MyArray
End Sub
Còn cái này:
adam_tran đã viết:
Tương tự khi tôi muốn đề cập (hay truy cập?) đến đối tượng nhóm của các item (items) trong 1 combobox thì cú pháp như thế nào? Tôi thử code sau nhưng nó báo lỗi:

Dim Item (As CÁI GÌ nữa chứ nhỉ!!!)
For each Item in ComboBox.Items
''''''''''''''''''''''''''''
Next

Theo em hiểu thì bác muốn truy cập đến một mục nào đó trong danh sách (gọi là Item cũng được). Tuy vậy ComboBox không có thuộc tính này (Items). Muốn truy vấn đến một hạng mục trong danh sách, ta dùng thuộc tính ListIndex(<index>)
Chúc bác thành công!
 
Hai2Hai Post :

Thêm 1 chú ý nhỏ:

Đây là ComboBox, ListBox nằm trong bộ thư viện MS Form 2.0 (fm20.dll) của bộ ms office. Không phải các Controls khác. Dĩ nhiên là Excel thì làm với công cụ này rồi (Limit của FM20's ComboBox, ListBox là hình như chỉ support 20 columns thôi - ko nhớ lắm vì lâu quá rồi ko dùng đến món này)

Cách thức add items này ngoài việc dùng mảng như Cường thì hình như (cũng ko nhờ nốt vì chỉ còn tý thông tin nằm trong đầu) là đầu tiên thì add item (col 0), sau đó thì dùng thuộc tính List(...ko nhớ...) hay là item(...) gì đó để update các columns còn lại - hơi phiền vì phải dùng đến 2 lệnh trong vòng lặp. Tuy nhiên, nếu dùng trong Excel thì làm như Cường (dùng mảng) là ổn rồi.

Viết 1 thủ tục kiểu như (Dựa theo cách lấy dữ liệu từ mảng)

Public Function LoadDataToComBo(cboName As Object, arrDataSource As Variant) As Boolean
'//************************************************** *******************
'// Purpose: Load 1 mang vao ComboBox hoac Listbox cua MS Form 2
'// Parameters:
'// 1. cboName: ComboBox hoac ListBox can load du lieu
'// 2. arrDataSource: Mang n chieu - nguon du lieu can load len combobox hay listbox
'// Return:
'// - True If load successfull, False if failed.
'// Samples:
'// Dim Dim myArray(6, 3)
'// Fill myArray data here...
'// iRet = LoadDataToComBo(ComboBox1, myArray)
'// Written by: VNUNI Development team
'// Histories....
'// ...
'//************************************************** *******************
On Error Goto Proc_Error
Dim ....
'// Asumes function failed.
LoadDataToComBo = False
'// Identify number of columns
cboName.ColumnCount = Ubound(arrDataSource,...) --> Làm thế nào để lấy chiều của mảng, tương ứng với số cột

'// Loading data to controls
cboName.Column() = MyArray
'// Continue your code here....

Done:
-----LoadDataToComBo = True
-----Exit Function

Proc_Error:
'// Raise error description here....
'//...
-----....
End Function

Trong sự kiện Form_Load hay Gì gì đó_Load (Form đó có cái Combo, listbox của FM20.dll nhé) thì Call cái hàm như mô tả trong phần samples ở trên

Tóm lại là viết kiểu như vậy, còn code cụ thể thì lâu lắm rồi ko viết. Đoạn trên chỉ là viết chay thôi (ko viết trong môi trường lập trình)
 
Web KT
Back
Top Bottom