Thật thú vị khi xem macro VBA của bạn thao tác trên màn hình, bạn có thể giúp Macro của mình chạy nhanh hơn nếu bạn tắt (vô hiệu hóa) Cập nhật màn hình.
Tắt cập nhật màn hình
1. Để vô hiệu hóa ScreenUpdating, Ở đầu mã của bạn, hãy đặt dòng này:
1 | Application.ScreenUpdating = Sai |
Bật cập nhật màn hình
2. Để kích hoạt lại ScreenUpdating, Ở cuối mã của bạn, hãy đặt dòng này:
1 | Application.ScreenUpdating = True |
Ví dụ về cập nhật màn hình VBA
Quy trình của bạn sau đó sẽ giống như sau:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = Sai'Làm việc gì đóPhạm vi ("a1"). Sao chép phạm vi ("b1")Phạm vi ("a2"). Sao chép phạm vi ("b2")Phạm vi ("a3"). Sao chép phạm vi ("b3")Application.ScreenUpdating = TrueKết thúc Sub |
ScreenUpdating Refresh
Vô hiệu hóa ScreenUpdating sẽ làm cho mã VBA của bạn chạy nhanh hơn RẤT NHIỀU, nhưng nó cũng sẽ làm cho công việc của bạn có vẻ chuyên nghiệp hơn. Người dùng cuối thường không muốn xem các hành động hậu trường trong quy trình của bạn (đặc biệt là khi quy trình chạy chậm). Ngoài ra, bạn có thể không muốn người dùng cuối nhìn thấy chức năng hậu trường (ví dụ: Bảng tính ẩn). Tôi khuyên bạn nên tắt (và bật lại) Cập nhật màn hình trong hầu như tất cả các quy trình của bạn.
Tuy nhiên, có một số lúc bạn muốn màn hình làm mới. Để làm mới màn hình, bạn sẽ cần tạm thời bật lại Cập nhật màn hình (không có lệnh "làm mới" màn hình):
123 | Application.ScreenUpdating = True'Làm việc gì đóApplication.ScreenUpdating = Sai |
Cài đặt VBA - Mã tăng tốc
Có một số cài đặt khác để cải thiện tốc độ mã của bạn.
Việc tắt tính toán tự động có thể tạo ra sự khác biệt LỚN về tốc độ:
1 | Application.Calculation = xlManual |
Việc tắt Thanh trạng thái cũng sẽ tạo ra một sự khác biệt nhỏ:
1 | Application.DisplayStatusBar = Sai |
Nếu sổ làm việc của bạn chứa các sự kiện, bạn thường nên tắt các sự kiện khi bắt đầu quy trình của mình:
1 | Application.EnableEvents = Sai |
Cuối cùng, mã VBA của bạn có thể bị chậm lại khi Excel cố gắng tính lại số lần ngắt trang (Lưu ý: không phải tất cả các quy trình sẽ bị ảnh hưởng). Để tắt hiển thị ngắt trang, hãy sử dụng dòng mã này:
1 | ActiveSheet.DisplayPageBreaks = Sai |