thanhphuccd
Thành viên mới
- Tham gia
- 28/5/08
- Bài viết
- 49
- Được thích
- 2
Bạn dùng code sau nhé:Mình có nhiều cột khác nhau. Mình cần thể hiện trong listbox cột đầu tiên và một trong các cột còn lại (theo tùy chọn). Tuy nhiên, mình tìm hoài không ra cách làm, mình rất mong được sự giúp đỡ của anh, chị, em trong diễn đàn (ý tưởng mình kèm theo file)
Private Sub CommandButton1_Click()
Dim cn As Object, rst As Object
Set cn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO""")
rst.Open ("Select F1, F7 From [Sheet1$] where F1 is not null"), cn
With ListBox1
.ColumnCount = 2
.ColumnWidths = "100;100"
.Column = rst.getrows
End With
End Sub
Mình cảm ơn bạn nhiều!Bạn dùng code sau nhé:
Mã:Private Sub CommandButton1_Click() Dim cn As Object, rst As Object Set cn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset") cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO""") rst.Open ("Select F1, F7 From [Sheet1$] where F1 is not null"), cn With ListBox1 .ColumnCount = 2 .ColumnWidths = "100;100" .Column = rst.getrows End With End Sub
Code hay quá, kết quả như ý muốn. Tuy nhiên, nếu mình muốn làm cho dòng thay cho cột thì chỉnh thế nào? Nhờ bạn chỉ giúp mìnhBạn dùng code sau nhé:
Mã:Private Sub CommandButton1_Click() Dim cn As Object, rst As Object Set cn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset") cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO""") rst.Open ("Select F1, F7 From [Sheet1$] where F1 is not null"), cn With ListBox1 .ColumnCount = 2 .ColumnWidths = "100;100" .Column = rst.getrows End With End Sub
Trường hợp mình muốn lấy dữ liệu theo dòng (dòng 1 cố định, từ dòng 2 trở đi là tùy chọn) và thể hiện trong listbox từ dòng thành cột được không bạn?Bạn xem file, xin mời
Dim Arr() As String
Private Sub cb2_Change()
Dim Col As Long, W As Integer, J As Long
Col = [B2].CurrentRegion.Columns.Count
ReDim Arr(1 To Col, 1 To 2)
For J = 1 To Col
Arr(J, 1) = Cells(1, J).Value
Arr(J, 2) = Cells(Me!cb2.Value, J)
Next J
Me!lb2.List = Arr()
End Sub
Mình cảm ơn bạn rất nhiều!Có vẻ như iêu cầu này đơn giản hơn nữa là khác:
PHP:Dim Arr() As String Private Sub cb2_Change() Dim Col As Long, W As Integer, J As Long Col = [B2].CurrentRegion.Columns.Count ReDim Arr(1 To Col, 1 To 2) For J = 1 To Col Arr(J, 1) = Cells(1, J).Value Arr(J, 2) = Cells(Me!cb2.Value, J) Next J Me!lb2.List = Arr() End Sub
Thêm cho bạn 1 cách khác nhé:Trường hợp mình muốn lấy dữ liệu theo dòng (dòng 1 cố định, từ dòng 2 trở đi là tùy chọn) và thể hiện trong listbox từ dòng thành cột được không bạn?
Private Sub cb2_Change()
Dim cn As Object, rst As Object
Set cn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=NO""")
rst.Open ("Select * From [Sheet1$A1:I10] where F1 like 'A1' or F1 like 'A" & cb2.Text & "'"), cn
lb2.List() = rst.getrows
End Sub