Listbox thể hiện trên 65536 dòng (2 người xem)

Liên hệ QC

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

NGUYENQUANGTHO

Thành viên mới
Tham gia
9/9/10
Bài viết
34
Được thích
33
Chào các bạn. Mình có một vấn đề mong các bạn giải thích như sau:
Tôi muốn Listbox hiển thị trên 65536 dòng thì phải làm sao?
Đây là ví dụ tôi tải trên GPE. Tôi muốn giá trị copy xuống bảng tính là cộ ID và Ngày thì phải thay đổi chỗ nào trong code?
 

File đính kèm

Vậy anh có thể giúp em cho trường hợp này luôn được không? Có nghĩa là Bảng giá sẽ lưu riêng 01 file, Dữ liệu báo giá sẽ là file khác. Khi mở file Dữ liệu báo giá lên thì nó sẽ tự động lấy dữ liệu ở file Bảng giá. Sau khi sử dụng xong thì nó sẽ xóa dữ liệu của Bảng giá (đã lấy từ file Bảng giá). (Mục dích là làm giảm dung lượng của file Dữ liệu báo giá).

Vậy tôi tách bảng giá ra riêng
Tải file mới tại đây: http://www.mediafire.com/?8bm5qixuywczav3
Cách dùng vẫn như cũ.
Khi bạn mở file JOBCARD.xlsm lên thì lập tức dữ liệu từ bảng giá (file PriceList.xlsx) sẽ được nạp vào 1 sheet phụ (dùng ADO code)... Từ bây giờ, mọi thao tác lọc dữ liệu trên form sẽ được lấy từ sheet tạm này
Sau khi đóng file, sheet tạm sẽ tự động xóa
(lúc đầu mở file hơi lâu chút vì phải chờ dữ liệu cập nhật)
Test thử rồi thông báo cho tôi biết nhé
 
Upvote 0
Em đã Test thử, rất OK. Chỉ có một vấn đề nhỏ là khi em mở Form lên thì lại mất cột Số phụ tùng trong ListBox.

untitled_640x314.jpg

Nhưng khi lọc thì Số phụ tùng lại hiện ra và điều này không làm ảnh hưởng đến việc gán dữ liệu xuống sheet.
Tìm hiểu nãy giờ thì ra là ta không chép cột STT khi chép dữ liệu qua sheet tạm. Em đã thử sửa lại code như sau và thấy tạm ổn:

----------------------------
Sub Auto_Open()
Dim wksTmp As Worksheet, wkb As Workbook, Target As Range
Dim FileName As String, SheetName As String, RangeAddress As String
On Error GoTo ExitSub
Set wkb = ThisWorkbook
sTmpName = "Temporary"
If WksExist(sTmpName) = False Then
With wkb
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = sTmpName
End With
End If
Set wksTmp = wkb.Sheets(sTmpName)
Set Target = wksTmp.Range("B1")
FileName = wkb.Path & "\PriceList.xlsx"
SheetName = "BangGia"
RangeAddress = "A1:G200000"
GetData FileName, SheetName, RangeAddress, Target, True, True
wksTmp.Range("S1:T1").Value = wksTmp.Range("B1:C1").Value
wksTmp.Visible = xlSheetVeryHidden
MsgBox "Du lieu da cap nhat!"
Exit Sub
ExitSub:
MsgBox "Cap nhat bang gía that bai"
End Sub

---------------------------------------
Rất cảm ơn anh ndu96081631 đã nhiệt tình giúp đỡ.
 

File đính kèm

  • untitled_320x157.jpg
    untitled_320x157.jpg
    14.9 KB · Đọc: 107
Lần chỉnh sửa cuối:
Upvote 0
Em đã Test thử, rất OK. Chỉ có một vấn đề nhỏ là khi em mở Form lên thì lại mất cột Số phụ tùng trong ListBox.



Nhưng khi lọc thì Số phụ tùng lại hiện ra và điều này không làm ảnh hưởng đến việc gán dữ liệu xuống sheet.
Tìm hiểu nãy giờ thì ra là ta không chép cột STT khi chép dữ liệu qua sheet tạm. Em đã thử sửa lại code như sau và thấy tạm ổn:
.

Không cần sửa gì nhiều đâu, chỉ là tôi test chưa kỹ
Trong sự kiện UserForm_Initialize có code: (ở gần cuối)
Set rRes = Intersect(rng, rng.Offset(1, 1))
Sửa thành vầy nhé:
Set rRes = Intersect(rng, rng.Offset(1))
Chỉ vậy thôi là đủ
 
Upvote 0
Hôm trước có đọc 01 vài ý kiến của anh ndu96081631 về một số lỗi ngớ ngẩn của Excel 2007. Em cũng thường gặp trường hợp như vậy, đang làm tự nhiên báo lỗi "Don't send" rồi đóng file mất tiêu. Không biết anh ndu96081631 đã tìm ra nguyên nhân chưa? Em cũng sợ dùng Excel 2007 lắm, em chỉ dùng nó đối với những file không có code thôi, còn đối với những file có code thì chỉ dùng 2003.
Anh có thể áp dụng bài này nếu dùng Excel 2003 không? Có nghĩa là chúng ta sẽ để Bảng giá ở 03 vùng (hoặc 03 sheet) khác nhau. Làm sao khi nạp Listbox sẽ hiển thị tổng hợp của 03 vùng này? Khi lọc sẽ lọc cùng lúc 03 vùng và kết quả là kết quả tổng hợp?
Rất mong anh ndu96081631 và các bạn cho ý kiến.
 
Upvote 0
Hôm trước có đọc 01 vài ý kiến của anh ndu96081631 về một số lỗi ngớ ngẩn của Excel 2007. Em cũng thường gặp trường hợp như vậy, đang làm tự nhiên báo lỗi "Don't send" rồi đóng file mất tiêu. Không biết anh ndu96081631 đã tìm ra nguyên nhân chưa? Em cũng sợ dùng Excel 2007 lắm, em chỉ dùng nó đối với những file không có code thôi, còn đối với những file có code thì chỉ dùng 2003.
Anh có thể áp dụng bài này nếu dùng Excel 2003 không? Có nghĩa là chúng ta sẽ để Bảng giá ở 03 vùng (hoặc 03 sheet) khác nhau. Làm sao khi nạp Listbox sẽ hiển thị tổng hợp của 03 vùng này? Khi lọc sẽ lọc cùng lúc 03 vùng và kết quả là kết quả tổng hợp?
Rất mong anh ndu96081631 và các bạn cho ý kiến.

Sao bác không dùng Excel2010, bây giờ mấy ai còn sài 2003 nữa đâu.
 
Upvote 0
Sao bác không dùng Excel2010, bây giờ mấy ai còn sài 2003 nữa đâu.
Mình đang dùng Excel 2007 đấy chứ. Tuy nhiên, mình thường lưu file dưới dạng .xls thôi và chưa từng bị lỗi "Don't send". Còn nếu lưu dưới dạng .xlsm thì thường hay bị lỗi lắm.
Còn chuyển sang 2010 thì nói thật mình chưa chuẩn bị cho việc này vì mình đã quen rồi.
 
Upvote 0
Mình đang dùng Excel 2007 đấy chứ. Tuy nhiên, mình thường lưu file dưới dạng .xls thôi và chưa từng bị lỗi "Don't send". Còn nếu lưu dưới dạng .xlsm thì thường hay bị lỗi lắm.
Còn chuyển sang 2010 thì nói thật mình chưa chuẩn bị cho việc này vì mình đã quen rồi.
Nếu bạn dùng Excel 2007 đã quen thì cứ yên tâm nâng cấp lên Excel 2010, vì giao diện chúng y chang nhau thôi
Vấn đề là Excel 2010 rất ít khi gặp lỗi tào lao như trên Excel 2007 (hồi trước tôi dùng Excel 2007 một thời gian, thấy ghét quá nên dẹp nó luôn rồi. Dùng Excel 2010 rất ổn định)
 
Upvote 0
Nếu bạn dùng Excel 2007 đã quen thì cứ yên tâm nâng cấp lên Excel 2010, vì giao diện chúng y chang nhau thôi
Vấn đề là Excel 2010 rất ít khi gặp lỗi tào lao như trên Excel 2007 (hồi trước tôi dùng Excel 2007 một thời gian, thấy ghét quá nên dẹp nó luôn rồi. Dùng Excel 2010 rất ổn định)
OK. Em sẽ cố gắng tìm hiểu và nâng cấp lên 2010. Em cũng được nhiều người khuyên lắm rồi, nhưng chưa thử. Nay anh ndu96081631 nói vậy là em yên tâm rồi.
 
Upvote 0
Vậy tôi tách bảng giá ra riêng
Tải file mới tại đây: http://www.mediafire.com/?8bm5qixuywczav3
Cách dùng vẫn như cũ.
Khi bạn mở file JOBCARD.xlsm lên thì lập tức dữ liệu từ bảng giá (file PriceList.xlsx) sẽ được nạp vào 1 sheet phụ (dùng ADO code)... Từ bây giờ, mọi thao tác lọc dữ liệu trên form sẽ được lấy từ sheet tạm này
Sau khi đóng file, sheet tạm sẽ tự động xóa
(lúc đầu mở file hơi lâu chút vì phải chờ dữ liệu cập nhật)
Test thử rồi thông báo cho tôi biết nhé
Nếu đã dùng ADO thì mình nên bỏ luôn sheet tạm này luôn đi Thầy.
 
Upvote 0
Nếu đã dùng ADO thì mình nên bỏ luôn sheet tạm này luôn đi Thầy.

Bởi vì code tôi dựa trên cơ sở Advanced Filter nên buộc phải có sheet tạm. ADO chẳng qua để lấy dữ liệu từ file đang đóng
Tôi cũng đang chở Hai Lúa viết 1 code dưới dạng tổng quát để lọc (giống như hàm Filter2DArray tôi đã viết). Tức giải quyết bài toán ở dạng tổng quát chứ không phải đi giải quyết từng bài toán cụ thể (mất công gặp bài khác lại phải sửa code)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom