Nhờ các cao thủ giúp đỡ

Liên hệ QC
Status
Không mở trả lời sau này.

linhdt

Thành viên chính thức
Tham gia
11/10/06
Bài viết
58
Được thích
108
Mình có 1 file Excel viết bằng macro. Gần đây khi chạy chương trình thường bị treo, ở thanh status hiển thị: Calculating Cells 100%. Máy tính bị tràn bộ nhớ và bị treo. Không biết có phải do virus hay do gì. vì chương trình chỉ có dung lượng 730kbs, làm sao mà nặng thế. Ai biết xin giúp đỡ+-+-+-+
 
Bạn thử gửi File cho xem thế nào. Khi ttính toán với một khối lượng nhiều (nhiều ô, nhiều công thức, công thức phức tạp . . ) thì tùy theo từng máy (yếu hay mạnh) mà có thể bị treo hoặc tràn bộ nhớ. . .
Thân!
 
Upvote 0
Bạn dùng quá nhiều công thu61c Sum, Sumif hoặc công thức mảng nên mỗi lần open Excel tính toán lại cho từng ô nên chậm hoặc khi nhập dữ liệu cũng chậm. Bạn có thể viết Macro không cho tính toán các sheet có công thức trên khi open . Chỉ cho tính toán khi cần thiết.
 
Upvote 0
lindt đã viết:
- Calculating Cells 100%.
- Máy tính bị tràn bộ nhớ và bị treo.
- Chương trình chỉ có dung lượng 730kbs
Dear all,
--------
Theo mình phỏng đoán thì bạn lindt sắp ... rơi vào tình trạng lặp vô hạn! (à cái 730 KB chứ!).
Bạn kiểm tra các trường hợp sau:
- Các điều kiện được sử dụng trong vòng lặp - thật chú ý các "điều kiện di động" (không cố định trong khi thực hiện vòng lặp)
- Kiểm tra các lệnh thực hiện trong thủ tục sự kiện Worksheet_Change

Sử dụng công cụ Debug để kiểm soát "đường đi" của chương trình.
 
Upvote 0
Đào Việt Cường đã viết:
Dear all,
--------
Theo mình phỏng đoán thì bạn lindt sắp ... rơi vào tình trạng lặp vô hạn! (à cái 730 KB chứ!).
Bạn kiểm tra các trường hợp sau:
- Các điều kiện được sử dụng trong vòng lặp - thật chú ý các "điều kiện di động" (không cố định trong khi thực hiện vòng lặp)
- Kiểm tra các lệnh thực hiện trong thủ tục sự kiện Worksheet_Change

Sử dụng công cụ Debug để kiểm soát "đường đi" của chương trình.
Cảm ơn các bác đã có nhời. Nhưng Hey, vấn đề là mình đâu có j lặp vô hạn. Mình đã thử xóa macro đi (remove module) , chỉ còn lại data không thôi, và cả dùng BKAV quét cho hết macro, nhưng khi mở file thì vẫn treo ngược hic hic. Nên mình phỏng đoán là hay là tại trong excel mình check vào đâu đó khiến cho khi mở ra là nó tự động tính toán lại wks, nhưng tìm mãi mà cũng k phải, cũng k phải cái Auto calculation.
File này đang dùng bình thường , rùi tự nhiên bị thôi. +-+-+-+ Khổ thế
 
Lần chỉnh sửa cuối:
Upvote 0
linhdt đã viết:
Cảm ơn các bác đã có nhời. Nhưng Hey, vấn đề là mình đâu có j lặp vô hạn. Mình đã thử xóa macro đi (remove module) , chỉ còn lại data không thôi, và cả dùng BKAV quét cho hết macro, nhưng khi mở file thì vẫn treo ngược hic hic. Nên mình phỏng đoán là hay là tại trong excel mình check vào đâu đó khiến cho khi mở ra là nó tự động tính toán lại wks, nhưng tìm mãi mà cũng k phải, cũng k phải cái Auto calculation.
File này đang dùng bình thường , rùi tự nhiên bị thôi. +-+-+-+ Khổ thế

Thử dùng chương trình khác diệt virus xem sao, BKAV không ăn thua đâu. Bạn kiểm tra lại các file khác trong Excel họat động như thế nào???
Một cách kiểm tra xem file đó có virus không là bạn vào Format/Sheet rồi kiểm tra trong Unhide xem có sheet nào lạ không?
 
Upvote 0
Hamvui đã viết:
Thử dùng chương trình khác diệt virus xem sao, BKAV không ăn thua đâu. Bạn kiểm tra lại các file khác trong Excel họat động như thế nào???
Một cách kiểm tra xem file đó có virus không là bạn vào Format/Sheet rồi kiểm tra trong Unhide xem có sheet nào lạ không?
Mình dùng Symantec Antivirus quét rùi, cũng k thấy gì. Mình cũng đã thử Unhide để xem có sheets nào lạ ko nhưng cũng k thấy. Làm lại từ phiên bản cũ cũng được nhưng mình chỉ muốn biết bệnh để sau này lỡ gặp còn biết cách xử lý
 
Upvote 0
Gửi bạn Lin...

Bạn hãy vào Tool vào Options vào calcultin bỏ dấu kiểm ở Interation thử xem vì nếu bạn đặt ở chế độ dó máy sẽ tính toán lại theo Macro rất nhiều vòng dễ bị treo máy
 
Upvote 0
Gửi bạn Linh...

Tôi đã "đao" FILE của bạn nhưng bạn đã khoá Macro chỉ xem được màn hình thông thường mà không biết bạn viết như thế nào thì khó chuẩn đoán lắm bạn hãy bỏ mã Macro để tôi xem và nếu giúp được bạn có thể
 
Upvote 0
Nguyễn Xuân Sơn đã viết:
Bạn hãy vào Tool vào Options vào calcultin bỏ dấu kiểm ở Interation thử xem vì nếu bạn đặt ở chế độ dó máy sẽ tính toán lại theo Macro rất nhiều vòng dễ bị treo máy

Chế độ này chỉ có tác dụng khi bạn sử dụng vòng lặp cho tính toán (chứ không phải của Macro).
VD : A1=A1-C2
Thân!
 
Upvote 0
Dear Mr Okebab,
----------------
Theo em "vòng lặp" vẫn có thể xảy ra nếu chúng ta sử dụng biến cố không hợp lý. Một ví dụ đơn giản nhưng rất sinh động cho trường hợp này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").Value = Range("A2").Value - Range("C3").Value
End Sub
Nếu không xem code thì đúng là khó "chuẩn bệnh"!
 
Upvote 0
Tôi đã vào xem FILE của bạn nếu không xem được mã bạn viết Macro thì hơi khó nhưng tôi xem qua các vùng tên bạn đặt có một số vùng bạn đặt có link từ File khác ( tấc nhiên có đường dẫn ) nhưng khi chạy Macro có sử dụng công thức liên quan máy phải dò nhiều ( và có thể File đã link không còn hoặc có lỗi ) bạn thử viết thêm trong Macro thủ tục mở các File đã link có liên quan, khi xong lệnh lại đóng File xem máy có bị treo không . Nếu treo máy bạn ấn nút ESC để dừng lệnh xem máy báo lỗi ở đâu.
 
Upvote 0
Sau khi dùng name manager và ASAP để bỏ các name sai, chạy ct xephang vẫn bình thường, chỉ có báo không vào ct thì tôi dùng Ctr Break thì vào tốt và có thử tính thử chi tiết công nợ.
 
Upvote 0
ThuNghi đã viết:
Sau khi dùng name managerASAP để bỏ các name sai, chạy ct xephang vẫn bình thường, chỉ có báo không vào ct thì tôi dùng Ctr Break thì vào tốt và có thử tính thử chi tiết công nợ.

Mình cũng dùng hai thằng này nhưng nó báo lỗi khi gặp name sai tên (Tên không hợp lệ)
Thế là lại xóa bằng tay.
Thế nới chết chứ.

-----------------------------------
Dear Đào Việt Cường
TH đó cũng có thể xảy ra nhưng rất hiếm bởi khi đã biết lập trình rồi thì khó có thể để xảy ra TH này.
Người ta gọi cái này là Circular Reference (tính gần đúng)
Chắc hôm nào phải có một bài viết về cái này mới được. Ngày xưa mình cứ nghĩ đó là lỗi, là không thể. Sau này mới phát hiện ra đây là một tính năng rất hay của Excel.

Thân!
 
Upvote 0
Bạn nên viết them 1 cặp dòng lệnh vào đầu và cuối chương trình của bạn,nhất là những macro tính toán nhiều.
application .screenupdate=False
...
application .screenupdate=true
 
Upvote 0
Đào Việt Cường đã viết:
Dear Mr Okebab,
----------------
Theo em "vòng lặp" vẫn có thể xảy ra nếu chúng ta sử dụng biến cố không hợp lý. Một ví dụ đơn giản nhưng rất sinh động cho trường hợp này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").Value = Range("A2").Value - Range("C3").Value
End Sub
Nếu không xem code thì đúng là khó "chuẩn bệnh"!

Liệu ta có thể dùng Sendkeys để xóa các name không VCường nhỉ ??
name managerASAP đều bị lỗi khi xóa các name lỗi. Xóa bằng tay thì lại được.
Vì vậy mình nghĩ đến sendkeys, cho vòng lặp khoảng 1000 lần.
 
Upvote 0
Cảm ơn các bạn đã nhiệt tình chỉ giúp. Tôi có một thắc mắc nữa: tôi có một form để đưa ra các điều kiện lọc cho chương trình. Trên form có textbox để lấy điều kiện về ngày trong kỳ dữ liệu (từ ngày...đến ngày...)
code dạng sau:
---------
Private Sub cb_bcxh_Click()
Dim tu, den As Date

tu = txt_ngay1.Value
den = txt_ngay2.Value
gxep = txt_gaxep.Value
makh = cb_makh.Value
loaictu = txt_loaict
Sheets("Xem").Range("xem_date_from") = tu
Sheets("Xem").Range("xem_date_to") = den
Sheets("Xem").Range("xem_gaxep") = gxep
Sheets("Xem").Range("xem_loaictu") = loaictu
XEP
End Sub
----------
Nhưng khi đưa ngày vào trên Excel để đặt điều kiện thì thường bị nhảy định dạng làm cho điều kiện sẽ bị sai, chẳng hạn khi tôi gõ 01/04/07 thì khi chạy đoạn code đó điều kiện về ngày sẽ hiện là: 04/01/07
Nhờ các bạn chỉ giúp !!!

-----------
Linh Chú ý:

- Thứ nhất tiêu đề của topic cần phải rõ ràng (Hỏi cái gì thì khi viết tiêu đề, người đọc đã phải hiểu được tới 90%)
- Mỗi topic nên chỉ là 1 chủ đề (Không hỏi lan man trong cùng 1 topic). Nếu ko thế thì Forum biến thành Rừng

Mọi người chú ý:
Hình như trên GPE đang rất xem nhẹ luật post bài. Các topics ko rõ chủ đề, bài viết không dấu, v.v... là rất nhiều mà vẫn được trả lời rất...nhiệt tình :).

Topic này được closed là xứng đáng!
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Dear all,
--------
Em cảm thấy chủ đề này bị "phân mảnh" nhiều quá: tên chủ đề không rõ ràng, mỗi người nói về một vấn đề, vấn đề cần được giải quyết cũng không biết đã giải quyết xong chưa...muốn trả lời bài viết nào cũng khó quá.
Mọi người nên chú ý một chút, càng là diễn đàn thì nội dung thảo luận càng phải rõ ràng, còn rất nhiều thành viên khác đang theo dõi chủ đề này.
Em xin phép đóng chủ đề này làm mẫu, ai có thắc mắc gì thì cứ email cho em, em sẽ mở lại.
Đừng giận nhé!
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom