Lỗi Overflow khi chạy Userform - Nhờ giúp đỡ !!!

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

phiphi2022

Thành viên mới
Tham gia
3/5/22
Bài viết
23
Được thích
4
Chào các anh chị !

Em đang có vấn đề cần sự giúp đỡ ạ.
Do em không rành về code, em đã chép code từ diễn đàn này để chạy userform.
Giờ đang mắc lỗi "Run-time error '6' Overflow" khi em thay đổi giá trị số Cột truy xuất trong listbox ạ
Cụ thể là em thay đổi từ A1:H thành A1:K

Code thế này sẽ chạy rất mượt :
Private Sub UserForm_Initialize()

'Nap cac doi tuong can thiet de khoi dong useform

Set Dic = CreateObject("Scripting.Dictionary")

sArray = Sheet6.Range("A1:H" & Sheet6.[A1000000].End(xlUp).Row).Value

LBDMHH.List() = sArray
'CBDMHH.List = Sheet3.[A1:A5].Value
CBDMHH.Value = "ALL"

End Sub

Nhưng khi em thay đổi "sArray = Sheet6.Range("A1:H" & Sheet6.[A1000000].End(xlUp).Row).Value" thành "sArray = Sheet6.Range("A1:K" & Sheet6.[A1000000].End(xlUp).Row).Value" thì sẽ báo lỗi trên ạ.

Do nhu cầu cần truy xuất thêm đến cột K nên bài toán đặt ra là em phải thay đổi giá trị trên.
Nhờ các anh chị hướng dẫn giúp nem với ạ !

Em cảm ơn nhiều ạ !
 
Dữ liệu hiện tại có bao nhiêu dòng?
 
Upvote 0
Chào các anh chị !

Em đang có vấn đề cần sự giúp đỡ ạ.
Do em không rành về code, em đã chép code từ diễn đàn này để chạy userform.
Giờ đang mắc lỗi "Run-time error '6' Overflow" khi em thay đổi giá trị số Cột truy xuất trong listbox ạ
Cụ thể là em thay đổi từ A1:H thành A1:K

Code thế này sẽ chạy rất mượt :
Private Sub UserForm_Initialize()

'Nap cac doi tuong can thiet de khoi dong useform

Set Dic = CreateObject("Scripting.Dictionary")

sArray = Sheet6.Range("A1:H" & Sheet6.[A1000000].End(xlUp).Row).Value

LBDMHH.List() = sArray
'CBDMHH.List = Sheet3.[A1:A5].Value
CBDMHH.Value = "ALL"

End Sub

Nhưng khi em thay đổi "sArray = Sheet6.Range("A1:H" & Sheet6.[A1000000].End(xlUp).Row).Value" thành "sArray = Sheet6.Range("A1:K" & Sheet6.[A1000000].End(xlUp).Row).Value" thì sẽ báo lỗi trên ạ.

Do nhu cầu cần truy xuất thêm đến cột K nên bài toán đặt ra là em phải thay đổi giá trị trên.
Nhờ các anh chị hướng dẫn giúp nem với ạ !

Em cảm ơn nhiều ạ !
Vùng dữ liệu có cột date thì bạn dùng .value2 nhé. Mà thấy bạn khai báo dic nhưng không dùng, bạn có đưa thiếu code không?
 
Upvote 0
Từ A đến H là 8 cột. Từ A đến K là 11 cột.
Cái LBDMHH của bạn có chắc là có thể tiếp nhạn thêm 3 cột?

Vùng dữ liệu có cột date thì bạn dùng .value2 nhé. Mà thấy bạn khai báo dic nhưng không dùng, bạn có đưa thiếu code không?
Chỉ có gán chứ có khai báo đâu.
Code này có thể dùng biến toàn cục. Dic có thể được khai báo và sử dụng ở đâu đó.
 
Upvote 0

File đính kèm

  • 1705132388749.png
    1705132388749.png
    57.5 KB · Đọc: 9
Lần chỉnh sửa cuối:
Upvote 0
Dữ liệu hiện tại có bao nhiêu dòng?
Dạ dữ liệu hiện tại là 100 000 dòng, nhưng em tăng lên vì tương lai có thể gấp 10 lần là 1 triệu dòng ạ !
Vùng dữ liệu có cột date thì bạn dùng .value2 nhé. Mà thấy bạn khai báo dic nhưng không dùng, bạn có đưa thiếu code không?
Dạ, đó là đoạn code đầy đủ ạ, không đưa thiếu đâu ạ !
Ngon lành cành đào. Khả năng chắc là đuôi file xls rồi.

Ghi bác: xls không phải lỗi flow, vì xls cũng lỗi nhưng báo lỗi khác (object).
File dạng .xlsb ạ !
Không phải lý do này, vì họ chỉ thêm cột thì mới báo lỗi. Khi chưa thêm cột không bị lỗi mà khai báo dòng cuối 1000000 vẫn không báo lỗi mà.
Dạ đúng như anh nói, chỉ báo lỗi khi thêm cột thôi ạ, còn để 1 triệu dòng vẫn chạy được với 8 cột ạ
Em có thử nhích nhẹ lên 9 cột thì vẫn được ạ !
Bài đã được tự động gộp:

Từ A đến H là 8 cột. Từ A đến K là 11 cột.
Cái LBDMHH của bạn có chắc là có thể tiếp nhạn thêm 3 cột?


Chỉ có gán chứ có khai báo đâu.
Code này có thể dùng biến toàn cục. Dic có thể được khai báo và sử dụng ở đâu đó.
Dạ ý anh là sao ạ? Làm sao để biết LBDMHH của thể chưa tối đa bao nhiêu cột ạ?
Nhờ anh chỉ em với !
Code là em lên đây mượn các anh chị đấy ạ, đã lâu rồi ạ !
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ dữ liệu hiện tại là 100 000 dòng, nhưng em tăng lên vì tương lai có thể gấp 10 lần là 1 triệu dòng ạ !

Dạ, đó là đoạn code đầy đủ ạ, không đưa thiếu đâu ạ !

File dạng .xlsb ạ !

Dạ đúng như anh nói, chỉ báo lỗi khi thêm cột thôi ạ, còn để 1 triệu dòng vẫn chạy được với 8 cột ạ
Em có thử nhích nhẹ lên 9 cột thì vẫn được ạ !
Bài đã được tự động gộp:

Từ A đến H là 8 cột. Từ A đến K là 11 cột.

Dạ ý anh là sao ạ? Làm sao để biết LBDMHH của thể chưa tối đa bao nhiêu cột ạ?
Nhờ anh chỉ em với !
Code là em lên đây mượn các anh chị đấy ạ, đã lâu rồi ạ !
Muốn nhanh gọn thì đính kềm file lên đây cho lẹ bạn ơi. Đỡ công các thành viên đoán tới đoán lui.
 
Upvote 0
Có thể là một trong 3 côt thêm có chứa dữ liệu gì gì đó mà List nó không chứa nổi.
 
Upvote 0
Em gửi file đính kèm ạ !

Nhờ các anh chị xem giúp ạ !
 

File đính kèm

  • TONGDON - Copy.xlsb
    3.5 MB · Đọc: 14
Upvote 0
Giờ đang mắc lỗi "Run-time error '6' Overflow" khi em thay đổi giá trị số Cột truy xuất trong listbox ạ
Cụ thể là em thay đổi từ A1:H thành A1:K
Theo tôi nghĩ cái đối tượng Listbox trong Userform của Excel nó có nhưng giới hạn như:
- Nếu là dạng Unboud Source thì không quá 10 cột.
- Nếu gán Row source trực tiếp với Range (name động) thì không bị lỗi gì.

Đây cũng là một trường hợp để ngâm cứu kỹ thuật thiết kế Form, các đối tượng, cách xử lý dữ liệu để nó hiệu quả chứ theo cách thớ đang làm, mặc dù không sai nhưng không hiệu quả.
- Tạo một mảng quá lớn, chiếm nhiều bộ nhớ, chỉ mới cho một đối tượng trên Form.
- Nếu là ứng dụng lấy dữ liệu qua mạng thì càng chết.
- Tải số lượng lớn dòng không cần thiết vì thực tế, người dùng không ai rảnh để kéo thanh cuộn tới lui để xem cái danh sách dài như vậy.
- ...
 
Upvote 0
Dạ dữ liệu hiện tại là 100 000 dòng, nhưng em tăng lên vì tương lai có thể gấp 10 lần là 1 triệu dòng ạ ! (1)

Dạ ý anh là sao ạ? Làm sao để biết LBDMHH của thể chưa tối đa bao nhiêu cột ạ? (2)
(1) 100 ngàn chưa phải là nhiều, tuy nhiên nên lọc chỉ lấy dữ liệu cần thiết đưa lên form
(2) Bài 4 hỏi "Cái LBDMHH của bạn có chắc là có thể tiếp nhạn thêm 3 cột?" là hỏi sức chứa của listbox. Bạn chỉ có 9 giường đơn mà cố nhét 11 người vào.

1705155070156.png
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Gán vào source Listbox chưa? :)
1705163226493.png
1705163250586.png
Lên 30 luôn cho nó máu luôn bác.
cơ mà nếu bị giới hạn thật thì chắc em phải chuyển sang listview cho cơ động thôi, bỏ bớt cái đỡ phải tìm hiểu, cái view ngăn cell ra nhìn cũng đẹp hơn. --=0 --=0 --=0
Em đang mò cái nhập danh mục mà chắc bỏ listbox quá. _)()(- _)()(- _)()(-

Chuyển sang cái này thì được, khó hiểu thật. Date có gì căng thẳng mà phải dành riêng value2 cho nó rối nữa?
 
Upvote 0
Dạ, chạy ổn lắm anh.

Cảm ơn anh nhiều ạ !
Bài đã được tự động gộp:

Theo tôi nghĩ cái đối tượng Listbox trong Userform của Excel nó có nhưng giới hạn như:
- Nếu là dạng Unboud Source thì không quá 10 cột.
- Nếu gán Row source trực tiếp với Range (name động) thì không bị lỗi gì.

Đây cũng là một trường hợp để ngâm cứu kỹ thuật thiết kế Form, các đối tượng, cách xử lý dữ liệu để nó hiệu quả chứ theo cách thớ đang làm, mặc dù không sai nhưng không hiệu quả.
- Tạo một mảng quá lớn, chiếm nhiều bộ nhớ, chỉ mới cho một đối tượng trên Form.
- Nếu là ứng dụng lấy dữ liệu qua mạng thì càng chết.
- Tải số lượng lớn dòng không cần thiết vì thực tế, người dùng không ai rảnh để kéo thanh cuộn tới lui để xem cái danh sách dài như vậy.
- ...
Em chỉ biết ngồi đọc và nghe. Em không phải trong nghề ạ. Cảm ơn anh ạ !
(1) 100 ngàn chưa phải là nhiều, tuy nhiên nên lọc chỉ lấy dữ liệu cần thiết đưa lên form
(2) Bài 4 hỏi "Cái LBDMHH của bạn có chắc là có thể tiếp nhạn thêm 3 cột?" là hỏi sức chứa của listbox. Bạn chỉ có 9 giường đơn mà cố nhét 11 người vào.

View attachment 298404
Cách để lọc lấy dữ liệu cần thiết để đưa lên form em không biết ạ, em chỉ là tay ngang ( copy ngang và sử dụng ngang ...) Anh có thể giúp em sửa code đó sang dạng lọc được không ạ ( Dạ nếu anh có thời gian ạ !)
Cảm ơn anh ạ !
Bài đã được tự động gộp:

Bài anh em nhấn cảm ơn, thích mấy lần mà cứ báo lỗi hoài, chả hiểu sao nữa.

Cảm ơn anh nhiều nhé !
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom