Lọc mã duy nhất từ 2 sheet đưa vào Lisbox (1 người xem)

Liên hệ QC

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

vanlinh_2904

Thành viên hoạt động
Tham gia
20/10/12
Bài viết
117
Được thích
3
Chào Anh Chị!
Mình có 2 danh sách từ 2 sheet khác nhau. Mình muốn khi nhập liệu ở sheet " nhaplieu" kích chuột phải sẽ hiện lên listbox lấy mã của 2 danh sách ở sheet "DS1" và "DS2" để chọn và điền vào cột tương ứng ở sheet "nhaplieu" , nhưng không ảnh hưởng đến những mã đã nhập vào sheet " nhaplieu" mà không có ở sheet "DS1" và "DS2" .
Cảm ơn các Anh Chị.
 

File đính kèm

Chào Anh Chị!
Mình có 2 danh sách từ 2 sheet khác nhau. Mình muốn khi nhập liệu ở sheet " nhaplieu" kích chuột phải sẽ hiện lên listbox lấy mã của 2 danh sách ở sheet "DS1" và "DS2" để chọn và điền vào cột tương ứng ở sheet "nhaplieu" , nhưng không ảnh hưởng đến những mã đã nhập vào sheet " nhaplieu" mà không có ở sheet "DS1" và "DS2" .
Cảm ơn các Anh Chị.

Gửi bạn file tham khảo, mình cũng mới học nên biết được chút ít. Sao bạn không để 2 danh sách trong cùng 1 sheet, mình thấy cấu trúc 2 file đó giống nhau.
 

File đính kèm

Upvote 0
Bạn thử vận hành form này xem đạt yêu cầu của bạn không?

(Các bạn xem file ở #11 & xin lỗi vì sự bất tiện này!)
 
Lần chỉnh sửa cuối:
Upvote 0
Gửi bạn file tham khảo, mình cũng mới học nên biết được chút ít. Sao bạn không để 2 danh sách trong cùng 1 sheet, mình thấy cấu trúc 2 file đó giống nhau.
Bạn gửi nhầm file rồi, bạn gửi giúp mình tham khảo nhé
Bài đã được tự động gộp:

Bạn thử vận hành form này xem đạt yêu cầu của bạn không?
Cảm ơn bạn nhiều nhé, đúng như ý mình rồi, nhưng bạn chỉnh lại giúp mình điền cả cột thông tin ( sinh ngày, nơi sinh) khi chọn mã ở sheet"nhaplieu",
Cảm ơn bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Chào Anh Chị!
Mình có 2 danh sách từ 2 sheet khác nhau. Mình muốn khi nhập liệu ở sheet " nhaplieu" kích chuột phải sẽ hiện lên listbox lấy mã của 2 danh sách ở sheet "DS1" và "DS2" để chọn và điền vào cột tương ứng ở sheet "nhaplieu" , nhưng không ảnh hưởng đến những mã đã nhập vào sheet " nhaplieu" mà không có ở sheet "DS1" và "DS2" .
Cảm ơn các Anh Chị.
Thêm 1 cách cho bạn tham khảo,
Chép code sau vàu Userform của bạn.

Mã:
Public cn As Object
Sub LayDL()
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
  
    Dim rst As Object
    Set rst = CreateObject("ADODB.Recordset")
    Application.Cursor = xlWait
    rst.Open "select * from [DS1$D5:G] where F1 is not null union select * from [DS2$B4:E] where F1 is not null", cn, 1
    If rst.RecordCount > 0 Then
        With ListBox1
            .ColumnCount = rst.Fields.Count
            .Column = rst.getrows
        End With
    Else
        MsgBox "No data to fill.", vbExclamation
        ListBox1.Clear
        Application.Cursor = xlDefault
    End If
    Application.Cursor = xlDefault
End Sub


Private Sub CommandButton1_Click()
    Dim lItem As Long
    For lItem = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(lItem) = True Then
            With ActiveCell
                .Offset(0, 0) = ListBox1.List(lItem, 0)
                .Offset(0, 1) = ListBox1.List(lItem, 1)
                .Offset(0, 5) = ListBox1.List(lItem, 2)
                .Offset(0, 6) = ListBox1.List(lItem, 3)
            End With
        End If
    Next
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Unload Me

End Sub

Private Sub UserForm_Initialize()
   LayDL
End Sub
 
Upvote 0
Thêm 1 cách cho bạn tham khảo,
Chép code sau vàu Userform của bạn.

Mã:
Public cn As Object
Sub LayDL()
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No""")
 
    Dim rst As Object
    Set rst = CreateObject("ADODB.Recordset")
    Application.Cursor = xlWait
    rst.Open "select * from [DS1$D5:G] where F1 is not null union select * from [DS2$B4:E] where F1 is not null", cn, 1
    If rst.RecordCount > 0 Then
        With ListBox1
            .ColumnCount = rst.Fields.Count
            .Column = rst.getrows
        End With
    Else
        MsgBox "No data to fill.", vbExclamation
        ListBox1.Clear
        Application.Cursor = xlDefault
    End If
    Application.Cursor = xlDefault
End Sub


Private Sub CommandButton1_Click()
    Dim lItem As Long
    For lItem = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(lItem) = True Then
            With ActiveCell
                .Offset(0, 0) = ListBox1.List(lItem, 0)
                .Offset(0, 1) = ListBox1.List(lItem, 1)
                .Offset(0, 5) = ListBox1.List(lItem, 2)
                .Offset(0, 6) = ListBox1.List(lItem, 3)
            End With
        End If
    Next
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    Unload Me

End Sub

Private Sub UserForm_Initialize()
   LayDL
End Sub
Cảm ơn bạn nhiều nhé!
 
Upvote 0
Cảm ơn bạn nhiều nhé, đúng như ý mình rồi, nhưng bạn chỉnh lại giúp mình điền cả cột thông tin ( sinh ngày, nơi sinh) khi chọn mã ở sheet"nhaplieu",
Cảm ơn bạn
Bạn thử viết tiếp đi, dòng đang để trống đó:
PHP:
Private Sub CmdChon_Click()
Dim Cls As Range
 
Set Cls = Selection
With Cls
    .Value = dArr(1 + rID, 1):                      .Offset(, 1) = dArr(1 + rID, 2)
                                                                         ' Viết tiếp 2 mệnh đề vô dòng này, tương tự dòng trên  '
End With
End Sub
 
Upvote 0
Nếu các cột ở listbox ở trên là kiểu số, bạn giúp mình định dạng trong listbox là "#,##0" . Cảm ơn bạn
 
Upvote 0
Nếu các cột ở listbox ở trên là kiểu số, bạn giúp mình định dạng trong listbox là "#,##0" .
Không thể "nếu" như vậy được;
4 cột trong ListBox đó được lấy từ các dòng duy nhất từ 2 trang 'DS1' & 'DS2'
Ở các trang này, (cũng chỉ 4 cột, hiển nhiên) có 3 cột kiểu chuỗi & 1 cột kiểu Ngày-Tháng-Năm;
Có cột nào là số liệu kiểu như bạn nói đâu kia chứ?

Hay bạn muốn các trang 'DS' sẽ có thêm cột thứ 5 chứa 'Đơn giá' cho mỗi người?

Chờ tin từ bạn.
 
Upvote 0
Không thể "nếu" như vậy được;
4 cột trong ListBox đó được lấy từ các dòng duy nhất từ 2 trang 'DS1' & 'DS2'
Ở các trang này, (cũng chỉ 4 cột, hiển nhiên) có 3 cột kiểu chuỗi & 1 cột kiểu Ngày-Tháng-Năm;
Có cột nào là số liệu kiểu như bạn nói đâu kia chứ?

Hay bạn muốn các trang 'DS' sẽ có thêm cột thứ 5 chứa 'Đơn giá' cho mỗi người?

Chờ tin từ bạn.
Ý mình là nếu như ở một cột trong danh sách nguồn 'DS1' & 'DS2' là kiểu số thì bên ListBox có định dạng "#,##0" .
 
Upvote 0
Web KT

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

Back
Top Bottom