Lỗi Overflow khi chạy Userform - Nhờ giúp đỡ !!! (1 người xem)

Liên hệ QC

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

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
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
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 ạ !)
Tôi còn chưa biết bạn cần gì thì tôi biết lọc kiểu gì.
 
Upvote 0
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é !
Tôi còn chưa biết bạn cần gì thì tôi biết lọc kiểu gì.
dạ file trên em cần lấy dữ liệu ở các cột : 1,2,3,4,6,7,8,10,11 thôi ạ, còn 5,9 thì không cần ạ
Nhờ anh chỉnh code giúp em ạ!
 
Upvote 0
Upvote 0
Lọc, nghĩa là lọc ít dòng lại, chứ không phải ít cột đi.
Và câu hỏi là: List dài thế để làm gì?
Dạ, số dòng đó là lịch sử mua hàng và giao dịch, cần tập trung theo thời gian ( có thể là cơ số năm ) nên mới để dồn gần 1 triệu dòng(trong tương lai).
Hay là do em không hiểu ý anh về câu hỏi nhỉ ??
Hay anh có cách nào khác để tối ưu hơn không ạ?
 
Upvote 0
Chủ bài đăng: Bạn đưa hết 11 cột & t00 ngàn dòng (hay sẽ 1 M dòng) ấy lên ListBox; rồi sẽ làm gì với nó?
Đừng nói là xài con trượt để tìm ra những dòng DỮ LIỆU cần thiết đó nha!
 
Upvote 0
Dạ, số dòng đó là lịch sử mua hàng và giao dịch, cần tập trung theo thời gian ( có thể là cơ số năm ) nên mới để dồn gần 1 triệu dòng(trong tương lai).
Hay là do em không hiểu ý anh về câu hỏi nhỉ ??
Hay anh có cách nào khác để tối ưu hơn không ạ?
"Để làm gì" tức là sẽ làm gì trên userform. Chứ nếu cần "tập trung theo thời gian nhiều năm" thì để nguyên trên sheet. Đã đến bài 26 rồi mà muốn giúp cũng khó!
 
Upvote 0
Chủ bài đăng: Bạn đưa hết 11 cột & t00 ngàn dòng (hay sẽ 1 M dòng) ấy lên ListBox; rồi sẽ làm gì với nó?
Đừng nói là xài con trượt để tìm ra những dòng DỮ LIỆU cần thiết đó nha!

"Để làm gì" tức là sẽ làm gì trên userform. Chứ nếu cần "tập trung theo thời gian nhiều năm" thì để nguyên trên sheet. Đã đến bài 26 rồi mà muốn giúp cũng khó!
À, giờ thì em đã hiểu ý câu hỏi
Đưa lên để sort kiểm tra khách hàng theo số điện thoại ạ
Tại cột B double click vào số điện thoại sẽ hiển thị danh sách các đơn hàng của vị khách đó trong trang tính ạ !
 
Upvote 0
Trời.
Doanh nghiệp có hàng 100 ngàn khách hàng, và dự tính phát triển đến 1 triệu.
Dùng Excel để quản lý đơn hàng?
 
Upvote 0
Trời.
Doanh nghiệp có hàng 100 ngàn khách hàng, và dự tính phát triển đến 1 triệu.
Dùng Excel để quản lý đơn hàng?
Hiện tại chỉ có 4,444 khách hàng thôi, số đơn hàng mới nhiều. Và bao gồm từ tháng 11/ 2022 đến nay.
À, giờ thì em đã hiểu ý câu hỏi
Đưa lên để sort kiểm tra khách hàng theo số điện thoại ạ
Thế thì thà dùng pivot table ngay trên sheet còn nhanh hơn. Còn nếu cứ muốn userform cho hoành tráng thì:
- đưa vào mảng bằng value2 (mảng 1)
- tạo 1 list danh sách khách hàng kèm số đt trên sheet (mảng 2), gắn vào listbox 1
- 1 textbox tìm kiếm (gõ số đt vào). Căn cứ vào số đt này, lấy được mã khách hàng trong mảng 2, gắn vào listbox1
- căn cứ vào mã khách hàng, lọc dữ liệu mảng 1 với chỉ 1 khách hàng đó, với bao nhiêu thông tin tùy thích, gán vào listbox 2.
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Em gửi file đính kèm ạ !
Nhờ các anh chị xem giúp ạ !
Mình cũng khá ngạc nhiên bỡi CSDL hàng 100 ngàn người mà chưa có mã duy nhất;
& bạn chủ bài đăng cũng không thể xài số ĐT làm mã duy nhất cho CSDL
Những mong là CSDL này chỉ là giả lập!
 
Upvote 0
Nếu gặp dữ liệu nhiều thì sẽ dùng phần mềm hay ứng dụng gì thay thế excel thì được bác nhỉ?
Excel công thức 500 dòng là em thấy nó chậm rồi.
Mướn người viết Form chạy trên Access.
Trả tiền cao hơn thì người ta viết cho WinForm hay WebForm, dùng CSDL mySQL hoặc SQL Server.
Xử lý hàng trăm ngàn đơn hàng một năm, gần 300 đơn một ngày thì đâu phải chuyện nhỏ.
 
Upvote 0
Hiện tại chỉ có 4,444 khách hàng thôi, số đơn hàng mới nhiều. Và bao gồm từ tháng 11/ 2022 đến nay.

Thế thì thà dùng pivot table ngay trên sheet còn nhanh hơn. Còn nếu cứ muốn userform cho hoành tráng thì:
- đưa vào mảng bằng value2 (mảng 1)
- tạo 1 list danh sách khách hàng kèm số đt trên sheet (mảng 2), gắn vào listbox 1
- 1 textbox tìm kiếm (gõ số đt vào). Căn cứ vào số đt này, lấy được mã khách hàng trong mảng 2, gắn vào listbox1
- căn cứ vào mã khách hàng, lọc dữ liệu mảng 1 với chỉ 1 khách hàng đó, với bao nhiêu thông tin tùy thích, gán vào listbox 2.
Có thể tạo 3 mảng thay vì 1, do có cùng số dòng nên cùng 1 vòng lặp theo dòng là truy xuất được cả 3.
Mướn người viết Form chạy trên Access.
Trả tiền cao hơn thì người ta viết cho WinForm hay WebForm, dùng CSDL mySQL hoặc SQL Server.
Xử lý hàng trăm ngàn đơn hàng một năm, gần 300 đơn một ngày thì đâu phải chuyện nhỏ.
Mình cũng khá ngạc nhiên bỡi CSDL hàng 100 ngàn người mà chưa có mã duy nhất;
& bạn chủ bài đăng cũng không thể xài số ĐT làm mã duy nhất cho CSDL
Những mong là CSDL này chỉ là giả lập!
Dạ file excel là thực tế đấy ạ, vì lý do kiến thức có hạn và tầm hiểu biết nông cạn nên hiện tại em vẫn phải vật lộn với file excel này ạ

Cảm ơn các anh chị đã giành thời gian giúp đỡ ạ !
 
Upvote 0

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

Back
Top Bottom