Code nối 2 range nằm ở 2 cột khác nhau để thể hiện trong listbox của userform

Liên hệ QC

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

  • LIST.xlsx
    8.9 KB · Đọc: 6
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

  • LIST.xlsm
    17.6 KB · Đọc: 33
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
Bạn xem file, xin mời
 

File đính kèm

  • ListBox.rar
    15.1 KB · Đọc: 16
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