Làm sao cập nhật 2 danh sách vào trong Listbox của Form (1 người xem)

Liên hệ QC

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

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,063
Được thích
175
Các anh chị chỉ giùm cách cập nhật 2 danh sách vào trong Listbox của Form như sau
Hiện nay em có 2 nguồn danh sách ở sheet Note1
Danh sách 1: ở cột H,I,J
Danh sách2: ở cột M,N,O
code sử dụng 1 danh sách thì chạy tốt
Mã:
Private Sub UserForm_Initialize()
    Dim endR As Long
    Dim arr()
    With Sheets("Note1")
        endR = .Cells(65000, 8).End(xlUp).Row
         
        arr = .Range(.Cells(10, 8), .Cells(endR, 10)).Value 
    End With
    With Me.MHList
        .ColumnCount = 3
        .List = arr
    End With
    'MHList.Selected(0) = True
    NhomHang.SetFocus
    Erase arr
End Sub
và em muốn thêm danh sách thứ 2 thì em sửa code (tô màu đỏ)
Mã:
Private Sub UserForm_Initialize()
    Dim endR As Long, [COLOR=#ff0000]endR1 As Long[/COLOR]
    Dim arr()
    With Sheets("Note1")
        endR = .Cells(65000, 8).End(xlUp).Row
        [COLOR=#ff0000]endR1 = .Cells(65000, 13).End(xlUp).Row[/COLOR]
        arr = .Range(.Cells(10, 8), .Cells(endR, 10)).Value [COLOR=#ff0000]+ .Range(.Cells(10, 13), .Cells(endR1, 15)).Value[/COLOR]
    End With
    With Me.MHList
        .ColumnCount = 3
        .List = arr
    End With
    'MHList.Selected(0) = True
    NhomHang.SetFocus
    Erase arr
End Sub
Cho hỏi bây giờ muốn Listbox nạp 1 lúc 2 danh sách thì fải làm sao ạ!
 

File đính kèm

Các anh chị, Bài trên có cách nào giải quyết không vậy?
 
Upvote 0
Các anh chị chỉ giùm cách cập nhật 2 danh sách vào trong Listbox của Form như sau
Hiện nay em có 2 nguồn danh sách ở sheet Note1
Danh sách 1: ở cột H,I,J
Danh sách2: ở cột M,N,O
code sử dụng 1 danh sách thì chạy tốt
Mã:
Private Sub UserForm_Initialize()
    Dim endR As Long
    Dim arr()
    With Sheets("Note1")
        endR = .Cells(65000, 8).End(xlUp).Row
         
        arr = .Range(.Cells(10, 8), .Cells(endR, 10)).Value 
    End With
    With Me.MHList
        .ColumnCount = 3
        .List = arr
    End With
    'MHList.Selected(0) = True
    NhomHang.SetFocus
    Erase arr
End Sub
và em muốn thêm danh sách thứ 2 thì em sửa code (tô màu đỏ)
Mã:
Private Sub UserForm_Initialize()
    Dim endR As Long, [COLOR=#ff0000]endR1 As Long[/COLOR]
    Dim arr()
    With Sheets("Note1")
        endR = .Cells(65000, 8).End(xlUp).Row
        [COLOR=#ff0000]endR1 = .Cells(65000, 13).End(xlUp).Row[/COLOR]
        arr = .Range(.Cells(10, 8), .Cells(endR, 10)).Value [COLOR=#ff0000]+ .Range(.Cells(10, 13), .Cells(endR1, 15)).Value[/COLOR]
    End With
    With Me.MHList
        .ColumnCount = 3
        .List = arr
    End With
    'MHList.Selected(0) = True
    NhomHang.SetFocus
    Erase arr
End Sub
Cho hỏi bây giờ muốn Listbox nạp 1 lúc 2 danh sách thì fải làm sao ạ!

Tôi dùng ADO, bạn chép code sau vào form, nhớ xóa code cũ đi nhé.

Mã:
Private Sub UserForm_Initialize()    
    Dim cn As Object, rst As Object
    Set cn = CreateObject("adodb.connection")
    cn.Open ("provider=microsoft.jet.oledb.4.0; data source=" & ThisWorkbook.FullName & _
             "; extended properties=""Excel 8.0;imex=1;hdr=no"";")
    Set rst = cn.Execute("select F1,F2,F3 from [Note1$H10:J34] " & _
                         "union all select * from [Note1$M10:O13]")
    If Not (rst.bof And rst.EOF) Then
        Me.MHList.ColumnCount = rst.Fields.Count
        Me.MHList.Column = rst.getrows()
    End If
    NhomHang.SetFocus
   
End Sub
 
Upvote 0
If Not (rst.bof And rst.EOF) Then

[/CODE]

anh hai cho hỏi một chút, dòng lệnh này có nghĩa là gì vậy anh?
à, với lại nếu mình muốn sort cột đâu, thì thêm lệnh như thế nào ạ
=============
vơi ADO thì làm sao lấy được range động, chẳng hạm như bây giờ data kết thúc ở J34, như khi gõ thêm số vào thì làm sao cho nó tự updata vào
cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
1. anh hai cho hỏi một chút, dòng lệnh này có nghĩa là gì vậy anh?
à, 2. với lại nếu mình muốn sort cột đâu, thì thêm lệnh như thế nào ạ
=============
3. vơi ADO thì làm sao lấy được range động, chẳng hạm như bây giờ data kết thúc ở J34, như khi gõ thêm số vào thì làm sao cho nó tự updata vào
cám ơn
1. Bạn xem link: http://sourcedaddy.com/ms-access/bof-eof.html
2. Them Order by vào.
3. Thay và nối chuổi là ok
Ví dụ: "select F1,F2,F3 from [Note1$H10:J34] "
Thay chổ màu đỏ như sau:
"select F1,F2,F3 from [Note1$H10:J" & endRow & "] "


 
Upvote 0
1. Bạn xem link: http://sourcedaddy.com/ms-access/bof-eof.html
2. Them Order by vào.
3. Thay và nối chuổi là ok
Ví dụ: "select F1,F2,F3 from [Note1$H10:J34] "
Thay chổ màu đỏ như sau:
"select F1,F2,F3 from [Note1$H10:J" & endRow & "] "



theo hiểu biết nông cạn của em thì ở đây ta dùng hàm
rst.getrows nên chỉ cần xét if not rst.eof là đủ
em thấy ADO nó xài chiêu đoán dòng cuối được mà anh
em hay chơi kiểu này
select * from [Note1$H10:J] where f1 is not null
theo ý anh thì cách đó có tốt không ?
 
Upvote 0
theo hiểu biết nông cạn của em thì ở đây ta dùng hàm
1. rst.getrows nên chỉ cần xét if not rst.eof là đủ
em thấy ADO nó xài chiêu đoán dòng cuối được mà anh
em hay chơi kiểu này
2. select * from [Note1$H10:J] where f1 is not null
theo ý anh thì cách đó có tốt không ?
1. Cách này ok, tuy nhiên nếu bạn dùng cách này sau này xử lý tình huống khác thì tôi không chắc nhé.
2. Dùng cách này ok tuy nhiên sẽ tốn thời gian để nạp những dòng trống không cần thiết rồi sau đó lọc ra. Vì bản thân Union all thì đã chậm hơn Union rồi.

Tôi chỉ nhận xét thế, còn chuyện dùng như thế nào thì còn tùy thuộc vào tình hình thực tế thôi.
 
Upvote 0
2. Dùng cách này ok tuy nhiên sẽ tốn thời gian để nạp những dòng trống không cần thiết rồi sau đó lọc ra. Vì bản thân Union all thì đã chậm hơn Union rồi.

Tôi chỉ nhận xét thế, còn chuyện dùng như thế nào thì còn tùy thuộc vào tình hình thực tế thôi.

vâng chúng ta nên theo thực tế vậy
chẳng hạn khi lấy dữ liệu từ file đóng thì việc tìm ra số endRow để gắn vào query e là không tưởng . hi hi
 
Upvote 0
vâng chúng ta nên theo thực tế vậy
chẳng hạn khi lấy dữ liệu từ file đóng thì việc tìm ra số endRow để gắn vào query e là không tưởng . hi hi
Việc đó thì khác, vì nếu xử như thế thì ta đâu cần dùng đến range? Nếu nói đến việc lấy cột thì ta chỉ cần lấy tên cột là được.
Tùy biến mà dùng thôi.
 
Upvote 0
Web KT

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

Back
Top Bottom