Cải thiện tốc độ và cấu trúc cho code VBA

Liên hệ QC

killitmore

Thành viên hoạt động
Tham gia
8/12/14
Bài viết
165
Được thích
72
File của em hiện tại có 2 sheet. Sheet races chứa Data cần format, sheet racesformatted chứa data đã được format. Coded nhằm mục đích Format raw data trong sheet Races để ta được kq là sheet racesformatted. Các bác vào link này down tạm (ko hiểu sao em ko upload lên diễn đàn được trong khi dung lượng vẫn còn thừa nhiều -+*/)
Mã:
https://goo.gl/Fvkfcl
Vấn đề hiện tại là code đang chạy quá chậm (khoảng 30' thậm chí là treo máy luôn).
Xin được các cao thủ xem xét, chỉ giáo giúp em xem nên làm thế nào để giúp code chạy nhanh hơn, giảm đỡ các vòng lặp, các sub phụ ko cần thiết mà vẫn đảm bảo code đọc dễ hiểu, cấu trúc rõ ràng.
Em xin chân thành cảm ơn }}}}}}}}}}
 
Lần chỉnh sửa cuối:
File của em hiện tại có 2 sheet. Sheet races chứa Data cần format, sheet racesformatted chứa data đã được format. Coded nhằm mục đích Format raw data trong sheet Races để ta được kq là sheet racesformatted. Các bác vào link này down tạm (ko hiểu sao em ko upload lên diễn đàn được trong khi dung lượng vẫn còn thừa nhiều -+*/)
Mã:
https://goo.gl/Fvkfcl
Vấn đề hiện tại là code đang chạy quá chậm (khoảng 30' thậm chí là treo máy luôn).
Xin được các cao thủ xem xét, chỉ giáo giúp em xem nên làm thế nào để giúp code chạy nhanh hơn, giảm đỡ các vòng lặp, các sub phụ ko cần thiết mà vẫn đảm bảo code đọc dễ hiểu, cấu trúc rõ ràng.
Em xin chân thành cảm ơn }}}}}}}}}}
Đây là 1 cách để tăng tốc độ:
PHP:
Sub CodeChayNhanhHon()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
              'Code cua ban.............
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
End Sub
 
Upvote 0
Đây là 1 cách để tăng tốc độ:
PHP:
Sub CodeChayNhanhHon()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
              'Code cua ban.............
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True
End Sub
Cái sub Run_all em đã tắt hết mấy tính năng bác bảo rồi, cuối sub thì em bật lại thôi %#^#$
 
Upvote 0
File của em hiện tại có 2 sheet. Sheet races chứa Data cần format, sheet racesformatted chứa data đã được format. Coded nhằm mục đích Format raw data trong sheet Races để ta được kq là sheet racesformatted. Các bác vào link này down tạm (ko hiểu sao em ko upload lên diễn đàn được trong khi dung lượng vẫn còn thừa nhiều -+*/)
Mã:
https://goo.gl/Fvkfcl
Vấn đề hiện tại là code đang chạy quá chậm (khoảng 30' thậm chí là treo máy luôn).
Xin được các cao thủ xem xét, chỉ giáo giúp em xem nên làm thế nào để giúp code chạy nhanh hơn, giảm đỡ các vòng lặp, các sub phụ ko cần thiết mà vẫn đảm bảo code đọc dễ hiểu, cấu trúc rõ ràng.
Em xin chân thành cảm ơn }}}}}}}}}}
Tiếc là tôi dùng Excel 2007, code bạn có một số lệnh Excel 2007 không có nên tôi không test được. Nhưng tôi đoán file bạn chậm là do dùng CF quá nhiều. Vậy bạn thử thêm một dòng vào cuối 2 Sub như bên dưới rồi thử xem có đỡ hơn không.
PHP:
Sub RTR_COLOR_ASCENDING_LOWREDHIGHGREENSCALEX(FormatRange)
'............
    Range(FormatRange).FormatConditions.Delete
End Sub
PHP:
Sub RTR_COLOR_DECENDING_HIGHGREENLOWREDSCALEX(FormatRange)
'............
    Range(FormatRange).FormatConditions.Delete
End Sub
 
Upvote 0
Tôi không hiểu bạn nói gì.
Cảm ơn bác đã quan tâm, code này em viết rất nhiều Sub phụ, sau đó có 1 sub là 1 Sub RUN_ALL (để chạy tất cả các Sub phụ đó). Trong Sub RUN_ALL này em đã tắt hết mấy cái Application bác bảo rồi :)
Em thêm 1 dòng vào cuối sub như bác bảo nhưng nó vẫn chậm quá ạ, 30' rồi mà vẫn chưa chạy xong **~**+-+-+-+
 
Upvote 0
Upvote 0
E đã bổ sung 2 dòng code ý cho các sub chứa cf, vik lại các code dùng With cho cấu trúc rõ ràng hơn nhưng chạy vẫn mất gần 2h ạ -+*/
 
Upvote 0
Web KT
Back
Top Bottom