Macro VBA chạy chậm trong bảng tính Excel của Office 365
Tuyệt vời! Tôi vừa tìm ra giải pháp cho vấn đề tốc độ macro đã làm tôi khó chịu kể từ khi nâng cấp từ Windows 7 lên Windows 10 vài tháng trước. Tôi đã lập trình và sử dụng macro VBA được khoảng 15 năm nay, và dường như mỗi khi có phiên bản Windows mới ra mắt, hệ thống lại phải chịu thêm tải, điều này thực sự làm chậm mọi thứ. Tôi đã đặt các tham số sau thành False trong macro của mình:
Ứng dụng.PrintCommunication = Sai
Application.EnableEvents = False
Ứng dụng.Màn hình cập nhật = Sai
Như tôi đã thấy trong các cuộc thảo luận khác, đây là câu trả lời đầu tiên cho rất nhiều vấn đề về hiệu suất vĩ mô.
Điều mà tôi phát hiện ra thực sự làm giảm tốc độ của mình là tôi có một số hàm do người dùng định nghĩa trong macro của mình đang gọi các hàm bảng tính bên ngoài:
Hàm FNASIN(X)
FNASIN = Excel.WorksheetFunction.Asin(X)
Kết thúc hàm
Hàm FNACOS(X)
FNACOS = Excel.WorksheetFunction.Acos(X)
Kết thúc hàm
Hàm FNRND0(X)
FNRND0 = Excel.WorksheetFunction.Round(X, 0)
Kết thúc hàm
Hàm FNRND1(X)
FNRND1 = Excel.WorksheetFunction.Round(X, 1)
Kết thúc hàm
Khi tôi thay thế các hàm được nhúng sẵn trong VBA thay vì gọi các hàm bảng tính bên ngoài, vấn đề về tốc độ đã biến mất:
Hàm FNASIN(X)
FNASIN = Atn(X / Sqr(1 - X * X))
Kết thúc hàm
Hàm FNACOS(X)
FNACOS = PI / 2 - Atn(X / Sqr(1 - X * X))
Kết thúc hàm
Hàm FNRND0(X)
FNRND0 = Int(X + 0.5)
Kết thúc hàm
Hàm FNRND1(X)
FNRND1 = Int(X * 10 + 0.5) / 10
Kết thúc hàm
Trước đây, việc sử dụng các hàm bảng tính trong macro không phải là vấn đề lớn. Bằng cách suy nghĩ lại vấn đề này, tôi đã giải quyết được khó khăn của mình.
Comments
Post a Comment