Báo lỗi Run-time '9'. Subscript out of range

Blue Softs epl Liên hệ QC

vmhieu.cdcs

Thành viên mới
Tham gia
21/5/09
Bài viết
12
Được thích
0
Xin các anh/chị chỉ giúp trường hợp so sánh 2 mảng này bị báo lỗi Run-time '9'. Subscript out of range.
Mình đã sai chỗ nào ạ
Xin cảm ơn các anh/chị đã giúp đỡ.

P/s: Pass view 898989

Xin cảm ơn rất nhiều ạ

1634975230910.png
 

File đính kèm

  • Kiemtra huong thatnghiep NQ 116.xlsb
    2.7 MB · Đọc: 17
Lần chỉnh sửa cuối:

HUONGHCKT

Thành viên tiêu biểu
Tham gia
30/8/12
Bài viết
538
Được thích
735
Xin các anh/chị chỉ giúp trường hợp so sánh 2 mảng này bị báo lỗi Run-time '9'. Subscript out of range.
Mình đã sai chỗ nào ạ
Xin cảm ơn các anh/chị đã giúp đỡ.
Gửi flie nên thì để pass - có gì bí mật vậy ? ai mở được mới giúp bạn được hay sao?
Tôi đoán là chỉ số Arr( j,1) nằm ngoài mảng arr .
bạn thay For j=1 to LR3 thành For j=1 to Ubound(arr) và chạy thử xem.
 
Upvote 1

vmhieu.cdcs

Thành viên mới
Tham gia
21/5/09
Bài viết
12
Được thích
0
Xin lỗi
Gửi flie nên thì để pass - có gì bí mật vậy ? ai mở được mới giúp bạn được hay sao?
Tôi đoán là chỉ số Arr( j,1) nằm ngoài mảng arr .
bạn thay For j=1 to LR3 thành For j=1 to Ubound(arr) và chạy thử xem.
Xin lỗi mình quên mở pass. cảm ơn bạn đã giúp đỡ

Đã thay LR thành Ubound nhưng vẫn còn lỗi ạ.

Xin giúp đỡ ạ, Xin cảm ơn nhiều
 
Lần chỉnh sửa cuối:
Upvote 0

batman1

Thành viên gạo cội
Tham gia
8/9/14
Bài viết
4,777
Được thích
7,890
Vấn đề chả có gì mà đính kèm tập tin tận 2,7 MB. Tôi thử tải 7 lần mà không thành công vì tốc độ chỉ có quãng 1 - 2 KB/s. Mất hàng chục phút vô ích.

Nhìn code thì sai rất nhiều.

1. phải là For i = 1 to Ubound(dk) và For j = 1 To Ubound(arr)

2. Làm quái gì có chuyện vd. kq(i, 1) = arr(j, 2) và các dòng tương tự. Giả dụ có LR1 = 103, LR3 = 21. Như thế thì UBound(dk) = 100, UBound(arr) = 20. Giả sử If arr(j, 1) = dk(i, 1) Then thỏa khi j = 15, i = 90. Lúc này theo code phải có

kq(90, 1) = arr(15, 2)

Vì Redim kq(1 To Ubound(arr), 3) nên mảng kq có 20 dòng. Truy cập tới kq(90, 1) thì không có lỗi mới lạ.

Ngoài ra code chưa phục vụ trường hợp không có dữ liệu.

Viết chay thế thôi chứ không tải được tập tin thì tôi không tham gia. Hàng chục ngày nay mỗi lần mở 1 trang GPE là phải đợi hàng phút. Không chơi, không việc gì phải nài nỉ người ta cải thiện tốc độ. Nói nhiều rồi.
 
Upvote 0

batman1

Thành viên gạo cội
Tham gia
8/9/14
Bài viết
4,777
Được thích
7,890
Từ trước tới nay bác vẫn sài tốc độ rùa bay như thế á
Với GPE thì có lúc nhanh lúc chậm. Có vẻ là lúc nào người ta nghịch là lại chậm, nói nhiều thành chán. Tôi ở nước ngoài nên rất có thể bị chặn (chặn nước ngoài). Quãng 2 năm trước cả tháng còn không vào được cơ. Nhưng thôi, giờ không ham.
 
Upvote 0

HUONGHCKT

Thành viên tiêu biểu
Tham gia
30/8/12
Bài viết
538
Được thích
735
Xin lỗi

Xin lỗi mình quên mở pass. cảm ơn bạn đã giúp đỡ

Đã thay LR thành Ubound nhưng vẫn còn lỗi ạ.

Xin giúp đỡ ạ, Xin cảm ơn nhiều
Nếu vẫn còn quan tâm hãy dùng thử code sau (tôi đã sửa lại code của bạn)
Bạn xem file và thấy tốc độ chạy code sẽ hơn hẳn code cũ.
Bạn hãy click vào nut tìm kiếm: dữ liệu đã được cập nhật vào các ô theo đúng yêu cầu. Bạn viết nhiều modul con và đều phải duyệt qua các ô của Sh1 nhiều lần (do vạy số vòng lặp tăng lên)==> code chạy chậm.
Tôi đưa vào mảng và chỉ duyệt 1 lần ==> tốc độ được cải thiện đáng kể.
Thứ nữa là hạn chế dùng On error Resume next như vậy khi có lỗi sẽ bị bỏ qua===> kết quả có thể không đúng như ý.
 

File đính kèm

  • Kiemtra huong thatnghiep NQ 116.xlsb
    4.5 MB · Đọc: 4
Upvote 0

vmhieu.cdcs

Thành viên mới
Tham gia
21/5/09
Bài viết
12
Được thích
0
Vấn đề chả có gì mà đính kèm tập tin tận 2,7 MB. Tôi thử tải 7 lần mà không thành công vì tốc độ chỉ có quãng 1 - 2 KB/s. Mất hàng chục phút vô ích.

Nhìn code thì sai rất nhiều.

1. phải là For i = 1 to Ubound(dk) và For j = 1 To Ubound(arr)

2. Làm quái gì có chuyện vd. kq(i, 1) = arr(j, 2) và các dòng tương tự. Giả dụ có LR1 = 103, LR3 = 21. Như thế thì UBound(dk) = 100, UBound(arr) = 20. Giả sử If arr(j, 1) = dk(i, 1) Then thỏa khi j = 15, i = 90. Lúc này theo code phải có

kq(90, 1) = arr(15, 2)

Vì Redim kq(1 To Ubound(arr), 3) nên mảng kq có 20 dòng. Truy cập tới kq(90, 1) thì không có lỗi mới lạ.

Ngoài ra code chưa phục vụ trường hợp không có dữ liệu.

Viết chay thế thôi chứ không tải được tập tin thì tôi không tham gia. Hàng chục ngày nay mỗi lần mở 1 trang GPE là phải đợi hàng phút. Không chơi, không việc gì phải nài nỉ người ta cải thiện tốc độ. Nói nhiều rồi.
Cảm ơn rất nhiều về sự đóng góp rất chân thành của bạn. Mình mới chập chững tập viết nên còn rất non nớt, đọc được những dòng chia sẽ của bạn mình rất vui.
Chân thành cảm ơn ạ !
Bài đã được tự động gộp:

Nếu vẫn còn quan tâm hãy dùng thử code sau (tôi đã sửa lại code của bạn)
Bạn xem file và thấy tốc độ chạy code sẽ hơn hẳn code cũ.
Bạn hãy click vào nut tìm kiếm: dữ liệu đã được cập nhật vào các ô theo đúng yêu cầu. Bạn viết nhiều modul con và đều phải duyệt qua các ô của Sh1 nhiều lần (do vạy số vòng lặp tăng lên)==> code chạy chậm.
Tôi đưa vào mảng và chỉ duyệt 1 lần ==> tốc độ được cải thiện đáng kể.
Thứ nữa là hạn chế dùng On error Resume next như vậy khi có lỗi sẽ bị bỏ qua===> kết quả có thể không đúng như ý.
Cảm ơn sự nhiệt tình của bạn,
 
Upvote 0
Web KT
Top Bottom