Lỗi Overflow khi khai báo biến kiểu Integer (nhưng do duyệt sai bảng dữ liệu)

  • Thread starter Thread starter LEHOC
  • Ngày gửi Ngày gửi
Liên hệ QC

LEHOC

Thành viên chính thức
Tham gia
11/1/17
Bài viết
89
Được thích
0
Các bác xem lại giúp em modules "md3ConverseData" trong file demo2.xlsm với ạ, sao em bị lỗi Overflow ạ, theo em tự tìm hiểu thì do vượt quá giới hạn bộ nhớ kiểu Integer, nhưng thực tế trong file của em, biến j của em không dùng hết kiểu Int, các bác xem giúp em sai chỗ nào với ạ.
Em cảm ơn!
 

File đính kèm

Kiểu dữ liệu Integer có giá trị từ -32,767 đến 32,767
Lệnh: j = Sheets("Table").Cells(i, 2).End(xlDown).Row
Báo lỗi khi j vượt quá 32,767, vì từ dòng 1296 trở xuống là rỗng.
 
Upvote 0
Các bác xem lại giúp em modules "md3ConverseData" trong file demo2.xlsm với ạ, sao em bị lỗi Overflow ạ, theo em tự tìm hiểu thì do vượt quá giới hạn bộ nhớ kiểu Integer, nhưng thực tế trong file của em, biến j của em không dùng hết kiểu Int, các bác xem giúp em sai chỗ nào với ạ.
Em cảm ơn!
Bạn thử thêm dòng code này.
Mã:
MsgBox Sheets("Table").Cells(i, 2).End(xlDown).Row
Trước dòng này.
Mã:
j = Sheets("Table").Cells(i, 2).End(xlDown).Row
Chịu khó mỏi tay một chút và hiểu được nguyên nhân. Nó bị cái lỗi ngay lúc i=1296, tức là ô B1296 không có dữ liệu suy ra lệnh
Mã:
Sheets("Table").Cells(i, 2).End(xlDown).Row
nó sẽ cho kết quả là dòng 1048576 (dòng cuối cùng trong bảng tính của bạn)
 
Upvote 0
Kiểu dữ liệu Integer có giá trị từ -32,767 đến 32,767
Lệnh: j = Sheets("Table").Cells(i, 2).End(xlDown).Row
Báo lỗi khi j vượt quá 32,767, vì từ dòng 1296 trở xuống là rỗng.
Em đã xem và biết rồi, nhưng phải sủa làm sao để cho vòng lặp của j chạy đứng vậy anh, dữ liệu của em không bao giờ vượt qua giới hạn của kiểu Integer được ạ.
 
Upvote 0
Em đã xem và biết rồi, nhưng phải sủa làm sao để cho vòng lặp của j chạy đứng vậy anh, dữ liệu của em không bao giờ vượt qua giới hạn của kiểu Integer được ạ.
Thử thêm đoạn code này.
Mã:
If Sheets("Table").Cells(i, 2) = Empty Then  Exit Sub
trước lệnh
Mã:
j = Sheets("Table").Cells(i, 2).End(xlDown).Row
 
Upvote 0
Thêm mã code đó thì bị lỗi subscript out of range bác ạ
Thêm biến Lr as Long
Lr = Sheets("Table").Range("E65535").End(xlUp).Row
...
Do While (Not Sheets("Table").Cells(j, 2).End(xlDown).Row = Sheets("Table").Cells(j, 6).End(xlDown).Row) _
And j < Lr
 
Upvote 0
Web KT

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

Back
Top Bottom