Code nối 2 range nằm ở 2 cột khác nhau để thể hiện trong listbox của userform (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thanhphuccd

Thành viên mới
Tham gia
28/5/08
Bài viết
49
Được thích
2
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)
 

File đính kèm

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)
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
 

File đính kèm

Upvote 0
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
Mình cảm ơn bạn nhiều!
Bài đã được tự động gộp:

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ình
 
Lần chỉnh sửa cuối:
Upvote 0
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
 
Upvote 0
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
Mình cảm ơn bạn rất nhiều!
 
Upvote 0
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?
Thêm cho bạn 1 cách khác nhé:

Mã:
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
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom