Macro chạy chậm, nhưng bước nhanh (Microsoft Excel)
Fredric đã viết về một vấn đề mà anh ấy đang gặp phải với một macro. Khi anh ta đang chạy macro trong VB Editor bằng F8 (bước qua macro), nó sẽ hoàn thành chỉ sau vài phút. Khi anh ta chạy macro hoàn toàn, có vẻ như sẽ mất mãi mãi để chạy, thường mất 20 phút hoặc hơn để thực thi. Mặc dù sổ làm việc của Fredric lớn (46 MB), sự khác biệt về thời gian giữa hai phương pháp chạy là khá khó chịu.
Những vấn đề như thế này có thể gây khó hiểu và họ thường thực hiện một số phân tích nặng nhọc để tìm ra. Một nơi tốt để bắt đầu là thêm một số “mã hẹn giờ” trong macro của bạn. Thêm một quy trình nhỏ giúp lưu giá trị thời gian và một quy trình khác so sánh giá trị đã lưu đó với thời gian hiện tại và hiển thị sự khác biệt. Ở phần đầu của đoạn mã bạn muốn phân tích, bạn gọi quy trình đầu tiên (giúp tiết kiệm thời gian bắt đầu)
và sau đó ở cuối phần mã bạn gọi là quy trình thứ hai.
Bằng cách đó, bạn có thể xác định phần nào trong mã của mình mất nhiều thời gian nhất để thực thi. Đây là những phần mã sau đó bạn tập trung vào, vì vậy bạn có thể tìm ra những gì họ đang làm mà mất quá nhiều thời gian.
Một điều nữa cần đảm bảo là bạn thêm hai dòng này vào đầu macro của bạn:
Application.ScreenUpdating = False Application.EnableEvents = False
Các tùy chọn này sẽ tắt cập nhật màn hình, điều này có thể làm chậm macro đang chạy và vô hiệu hóa các sự kiện. Dòng cuối cùng này được bao gồm để các thay đổi do macro thực hiện trong trang tính của bạn sẽ không kích hoạt các quy trình tính toán lại của Excel. Nếu macro của bạn đang thực hiện nhiều thay đổi trong dữ liệu trong trang tính và tính toán lại đầy đủ được kích hoạt sau mỗi lần thay đổi, thì với một sổ làm việc lớn như vậy, bạn có thể dành rất nhiều thời gian để thực hiện tính toán lại. Ở cuối macro của bạn, bạn đảo ngược hiệu ứng của hai dòng bạn đã thêm:
Application.EnableEvents = True Application.ScreenUpdating = True
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (2436) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: