2012-04-26 78 views
5

Tôi đã gỡ lỗi một vấn đề được đề cập trong một vài câu hỏi * khác về SO và nhận thấy một hành vi lạ trong quá trình gỡ lỗi.Kỹ thuật gỡ lỗi "Out of Memory" của Excel VBA

Hành vi: Lỗi 'hết bộ nhớ' có kinh nghiệm trong khi dán các công thức phức tạp. Chỉ khoảng một nửa trong số 20.000 hàng tôi đang lặp lại nhận các công thức được dán trước lỗi. Nhận xét hầu như tất cả mã, lỗi biến mất. Mã Uncomment tăng dần với hy vọng phát hiện ra phần mã cụ thể gây ra nó. Kết thúc hủy bỏ tất cả mã và ngừng gặp lỗi!

Điều này có nghĩa là mã giống hệt nhau hoạt động tốt trong cùng một phiên bản Excel và việc sửa chữa chỉ yêu cầu chạy các phiên bản mã nhẹ khác nhau trước khi quay lại phiên bản gốc. Điều gì có thể gây ra điều này?

+2

Tôi khuyên bạn nên thử dùng trình dọn dẹp mã của Ron Bovey (http://www.appspro.com/Utilities/CodeCleaner.htm) - nó sửa chữa mã bằng cách xuất nó, xóa nó và sau đó chèn lại các mô-đun đã xuất – brettdj

+0

+ 1 Tôi đồng ý với brettdj. Code Cleaner thực sự tốt. Tôi cũng tò mò về bất kỳ một ví dụ như vậy mà là đem lại cho bạn những lỗi ... –

+0

Cảm ơn @brettdj nhưng Code Cleaner đã không giúp đỡ. Nó đã quản lý để mang lại các tập tin .xla xuống đến 151k từ 159k, đó là hấp dẫn đối với tôi. – Trindaz

Trả lời

3

Giả sử dữ liệu bạn đang chạy chính xác giống nhau mỗi lần, có vẻ như vấn đề của bạn gặp phải với môi trường - vấn đề có thể là hệ điều hành hết bộ nhớ. Trong Excel 2007, bộ nhớ có thể sử dụng cho công thức và bộ đệm trục được tăng lên 2 gigabyte (GB), do đó có lẽ không phải là vấn đề. Tuy nhiên, tất nhiên nó cũng bị giới hạn bởi dung lượng bộ nhớ mà hệ điều hành của bạn đã có sẵn tại thời điểm đó.

Sự cố có thể xảy ra vì khi bạn kiểm tra lần đầu, bộ nhớ hệ điều hành có sẵn của bạn thấp hơn (từ các quá trình khác đang chạy ... thậm chí có thể đã bị vượt quá giới hạn bởi các chương trình nền như phần mềm Antivirus đang chạy quét) hơn khi bạn chạy macro đầy đủ sau đó. Tôi sẽ thử chạy macro của bạn với Trình quản lý tác vụ mở để xem liệu bạn có đang nhận được bất kỳ nơi nào gần mức thấp trên bộ nhớ vật lý không. Ngoài ra, (giả sử bạn đang sử dụng Excel 2007 hoặc mới hơn) hãy xem bộ nhớ Excel đang sử dụng bao nhiêu và xem liệu bạn có đang ở gần với giới hạn 2GB hay không. Tôi nghi ngờ rằng đây sẽ là vấn đề, nhưng ít nhất là kiểm tra gấp đôi. Ngoài ra, như Zairja nói, hãy chắc chắn rằng bạn đang thiết lập các tính toán để hướng dẫn sử dụng lúc đầu.

Bạn nói rằng bạn đang sử dụng công thức phức tạp ... kiểm tra bài viết này trên Improving Performance in Excel

Có rất nhiều thông tin hữu ích trong bài viết đó có thể sẽ giúp bạn sắp xếp macro của bạn.

Điều này có hữu ích cho bạn không?

Các vấn đề liên quan