thanhtam348
Thành viên thường trực
- Tham gia
- 9/3/07
- Bài viết
- 288
- Được thích
- 62
Trong ListBox tôi cần nó 13 cột nhưng bị lổi, chỉ được có 10, vậy có thể bằng cách nào để thêm cột cho nó được không các bạn ?
Listbox chỉ cho phép có tối đa là 10 cột thôi bạn ạ, nếu muốn sử dụng nhiều hơn thì bạn thử nghiên cứu Listview nhé, tìm trên diễn đàn có khá nhiều bài về Listview đấy.Trong ListBox tôi cần nó 13 cột nhưng bị lổi, chỉ được có 10, vậy có thể bằng cách nào để thêm cột cho nó được không các bạn ?
Sub napdl()
Dim dk As String, i, j, s1
If Me.ListBox1.ListCount > 0 Then Me.ListBox1.Clear
For i = 0 To Sheet11.[b65536].End(xlUp).Row - 2
If Trim(Sheet11.Cells(i + 2, "b")) = Trim(Me.ComboBox2) Then
Me.ListBox1.AddItem Sheet11.Cells(i + 2, "h"), j
Me.ListBox1.List(j, 1) = Sheet11.Cells(i + 2, "i")
Me.ListBox1.List(j, 2) = Sheet11.Cells(i + 2, "j")
Hi, nạp theo phương thức Add là bị dính chưởng rồi. Tìm cách khác
Mà bạn đưa luôn cái file đó lên đây cho tiện sửa. Cái việc của bạn hoàn toàn khả dĩ
Private Sub ListBox2_Click()
Dim i
For i = 1 To 13
Me.Controls("Tx" & Right("00" & i, 2)) = Me.ListBox2.Column(i - 1)
Next
End Sub
Trong ComboBox em dùng List name như anh thấy, còn vùng nguồn thì từ cột mã tới cột hàng cách nhau 5 cột đệm khác.Khi đã có giải pháp thì cũng dễ và gọn gàng thôi
Ta đặt tên 13 TextBox là Tx01, Tx02....Tx13 và thêm đoạn code
Mã:Private Sub ListBox2_Click() Dim i For i = 1 To 13 Me.Controls("Tx" & Right("00" & i, 2)) = Me.ListBox2.Column(i - 1) Next End Sub
Xem vi dụ
Sub napdl()
Dim dk As String, i, j, s1
Dim Mg(), Cl As Range
Me.TextBox1 = 0: Me.TextBox2 = 0: Me.TextBox3 = 0
Me.ListBox2.RowSource = ""
j = WorksheetFunction.CountIf(Range(Sheet1.[G2], _
Sheet1.[g65536].End(xlUp)), Trim(Me.ComboBox1))
If j = 0 Then Exit Sub
Set Cl = Sheet1.Columns("G").Find(what:=Trim(Me.ComboBox1))
Me.ListBox2.RowSource = "Sheet1!" & Cl.Offset(, 1).Resize(j, 13).Address
s1 = WorksheetFunction.Sum(Cl.Offset(, 5).Resize(j))
Me.TextBox1 = Format(s1, "#,##0")
Me.TextBox2 = Format(Int(s1 * 0.1), "#,##0")
Me.TextBox3 = Format(Int(s1 * 1.1), "#,##0")
End Sub
Anh sealand !Bạn chú ý đoạn CXode sau:
Sub napdl()
........................................
For Each Cl In Range(Sheet1.[G2], Sheet1.[g65536].End(xlUp)) 'Xác đụnh cột đầu tiên là cột G, muốn điều chỉnh chú ý chữ đỏ
If Trim(Cl.Value) = Trim(Me.ComboBox1) Then
For j = 0 To 12 'Day là số cột-1 vì tính từ 0
Mg(i, j) = IIf(IsNumeric(Cl.Offset(, j + 1)), Format(Cl.Offset(, j + 1), "#,##0"), Cl.Offset(, j + 1)) 'Cột thứ J+1 cách cột đầu
Next
i = i + 1
s1 = s1 + Val(Cl.Offset(, 5))
End If
Next
......................................................
End Sub
Nôm na như vậy hy vọng đễ hiểu hơn
Bạn nói dùng ListName là như thế nào mình không rõ, nhưng nếu dùng Rowsource thì cũng được và cũng khá nhanh nhưng với yêu cầu dữ liệu phải được sắp xếp theo cột tiêu chuẩn. Đây là cách nạp dùng Rowsource
Mã:Sub napdl() Dim dk As String, i, j, s1 Dim Mg(), Cl As Range Me.TextBox1 = 0: Me.TextBox2 = 0: Me.TextBox3 = 0 Me.ListBox2.RowSource = "" j = WorksheetFunction.CountIf(Range(Sheet1.[G2], _ Sheet1.[g65536].End(xlUp)), Trim(Me.ComboBox1)) If j = 0 Then Exit Sub Set Cl = Sheet1.Columns("G").Find(what:=Trim(Me.ComboBox1)) Me.ListBox2.RowSource = "Sheet1!" & Cl.Offset(, 1).Resize(j, 13).Address s1 = WorksheetFunction.Sum(Cl.Offset(, 5).Resize(j)) Me.TextBox1 = Format(s1, "#,##0") Me.TextBox2 = Format(Int(s1 * 0.1), "#,##0") Me.TextBox3 = Format(Int(s1 * 1.1), "#,##0") End Sub
Sub napdl()
'............................
Me.ListBox2.RowSource = "Sheet1!" & Cl.Offset(, 5).Resize(j, 17).Address
'............................
End Sub
Private Sub UserForm_Initialize()
Me.ListBox2.ColumnWidths = "80,30,50,40,70,60,60,60,60,60,60,60,60,60,60,60"
..................................
End Sub