lỗi tràn bộ nhớ khi làm phép nhân trong vba (1 người xem)

Liên hệ QC

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

diemhuyenanh

Thành viên hoạt động
Tham gia
6/9/09
Bài viết
167
Được thích
58
Chào các anh chị trên GPE! khi tôi làm phép nhân sheet1.range("A1")=21*18000 thì vba báo lỗi tràn bộ nhớ. không thực hiện được. anh chị giải thích giúp tôi với
 
Máy của bạn mặc định số nguyên là 2 byte integer, chỉ chứa được khoảng 32 ngàn. Có nhiều cách để chữa.
2 cách dễ nhất:
sheet1.range("A1") = CLng(21) * 18000 ' đổi một số thành Long thì kết quả chứa được đến trên 2 tỷ
sheet1.range("A1")= 21. * 18000 ' đổi một số thành Float (VBE sẽ tự động đổi nó thành 21#)
 
Upvote 0
Chính xác là Double đó anh Ndu, vì trong lập trình C có kiểu floaf và double là như nhau(chỉ hơn kém nhau vùng chứa số thập phân) nên đôi khi nhầm qua nhầm lại giữa các ngôn ngữ
 
Upvote 0
Trong VBA, hổng thấy cái nào gọi là Float cả! --=0
Đoán là bạn đang nói đến kiểu Double (bị thấy có dấu chấm sau số 21)

Tôi nhầm, trong ngữ cảnh của VBA thì phải nói là Double. Do quen nói chuyện theo lối tổng quát.
Theo lý thuyết (đời thượngt cổ), Float là tiếng tắt của floating point number (số có dấu chấm động); gồm hai loại Single Precision (độ chính xác đơn), và Double Precision (tăng đôi độ chính xác)
Trên thực tế, các hệ thống dùng Single để chỉ dạng float 4 bytes và double để chỉ dạng float 8 bytes. Nói cách khác, từ Single và Double về sau này dùng để phân biệt số bytes trong vùng nhớ. Trên hầu hết các hệ thống vận hành căn bản, Single có độ chính xác là 7 chữ số và Double chính xác đến 15 chữ số.
Vì sự giới hạn chính xác của Single, VBA măc định Float là Double.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom