Tắt (hoặc Bật) tính toán tự động - Ví dụ về mã VBA

Bất cứ khi nào bạn cập nhật giá trị ô, Excel sẽ thực hiện một quy trình để tính toán lại sổ làm việc. Khi làm việc trực tiếp trong Excel, bạn muốn điều này xảy ra 99,9% thời gian (ngoại lệ nếu bạn đang làm việc với một sổ làm việc cực lớn). Tuy nhiên, điều này thực sự có thể làm chậm mã VBA của bạn. Một phương pháp hay là đặt các tính toán của bạn thành thủ công khi bắt đầu macro và khôi phục các phép tính ở cuối macro. Nếu bạn cần tính toán lại sổ làm việc, bạn có thể yêu cầu Excel tính toán theo cách thủ công.

Tắt tính toán tự động

Bạn có thể tắt tính toán tự động với macro bằng cách đặt nó thành xlmanual. Sử dụng đoạn mã VBA sau:

1 Application.Calculation = xlManual

Bật lại tính toán tự động

Để bật lại tính năng tự động với cài đặt xlAutomatic:

1 Application.Calculation = xlAutomatic

Tôi khuyên bạn nên tắt Tính toán tự động ngay từ đầu quy trình của bạn và bật lại Tính toán tự động khi kết thúc. Nó sẽ trông giống thế này:

Tắt ví dụ macro tính toán tự động

12345678 Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Làm việc gì đóApplication.Calculation = xlAutomaticKết thúc Sub

Tính toán thủ công

Khi tính toán tự động bị tắt, bạn có thể sử dụng Tính toán lệnh để buộc Excel tính toán lại:

1 Tính toán

Bạn cũng có thể yêu cầu Excel chỉ tính toán lại một trang tính riêng lẻ:

1 Worksheets ("sheet1"). Tính toán

Bạn cũng có thể yêu cầu VBA tính toán lại chỉ một phạm vi (nhấp để đọc bài viết của chúng tôi về các phương pháp tính VBA)

Đây là cách điều này có thể trông bên trong một macro:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Làm việc gì đó'RecalcTính toán'Làm nhiều việc hơnApplication.Calculation = xlAutomaticKết thúc Sub

Cài đặt VBA - Mã tăng tốc

Nếu mục tiêu của bạn là tăng tốc mã, bạn cũng nên xem xét điều chỉnh các cài đặt khác sau:

Tắt tính năng Screenupdating có thể tạo ra sự khác biệt lớn về tốc độ:

1 Application.ScreenUpdating = Sai

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 cũng nên tắt các sự kiện khi bắt đầu quy trình của mình (để tăng tốc mã và để ngăn các vòng lặp vô tận!):

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 DisplayPageBreaks, hãy sử dụng dòng mã này:

1 ActiveSheet.DisplayPageBreaks = Sai

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave