Tính toán VBA - Hiện hành, Sổ làm việc, Trang tính hoặc Phạm vi

Hướng dẫn này sẽ dạy cho bạn tất cả các tùy chọn Tính toán khác nhau trong VBA.

Theo mặc định, Excel sẽ tính toán tất cả các sổ làm việc đang mở mỗi khi thay đổi sổ làm việc được thực hiện. Nó thực hiện điều này bằng cách tuân theo một cây tính toán trong đó nếu ô A1 bị thay đổi, nó sẽ cập nhật tất cả các ô dựa trên ô A1, v.v. Tuy nhiên, điều này có thể khiến mã VBA của bạn chạy cực kỳ chậm, vì mỗi khi một ô thay đổi, Excel phải tính toán lại.

Để tăng tốc độ VBA của bạn, bạn thường muốn tắt tính toán tự động khi bắt đầu quy trình của mình:

1 Application.Calculation = xlManual

và bật lại ở cuối:

1 Application.Calculation = xlAutomatic

Tuy nhiên, điều gì sẽ xảy ra nếu bạn muốn tính toán tất cả (hoặc một phần) sổ làm việc trong quy trình của mình? Phần còn lại của hướng dẫn này sẽ dạy bạn phải làm gì.

Tính toán ngay bây giờ

Bạn có thể sử dụng lệnh Tính toán để tính toán lại mọi thứ (trong tất cả các sổ làm việc đang mở):

1 Tính toán

Đây thường là phương pháp tốt nhất để sử dụng. Tuy nhiên, bạn cũng có thể thực hiện các phép tính hẹp hơn để cải thiện tốc độ.

Chỉ tính toán trang tính

Bạn cũng có thể yêu cầu VBA chỉ tính toán một trang tính cụ thể.

Mã này sẽ tính toán lại trang tính đang hoạt động:

1 ActiveSheet.Calculate

Mã này sẽ tính toán lại Sheet1:

1 Trang tính ("Trang tính1"). Tính toán

Tính toán phạm vi

Nếu bạn yêu cầu một phép tính hẹp hơn, bạn có thể yêu cầu VBA chỉ tính toán một phạm vi ô:

1 Trang tính ("Trang 1"). Phạm vi ("a1: a10"). Tính

Tính công thức riêng

Mã này sẽ chỉ tính toán một công thức ô riêng lẻ:

1 Phạm vi ("a1"). Tính

Tính toán Workbook

Không có tùy chọn VBA để chỉ tính toán toàn bộ sổ làm việc. Nếu bạn cần tính toán toàn bộ sổ làm việc, tùy chọn tốt nhất là sử dụng lệnh Tính toán:

1 Tính toán

Điều này sẽ tính toán tất cả các sổ làm việc đang mở. Nếu bạn thực sự quan tâm đến tốc độ và muốn tính toán toàn bộ sổ làm việc, bạn có thể lựa chọn nhiều hơn về sổ làm việc nào đang mở cùng một lúc.

Tính toán Workbook - Các phương pháp không hoạt động

Có một số phương pháp mà bạn có thể muốn sử dụng để buộc VBA chỉ tính toán một sổ làm việc, tuy nhiên không có phương pháp nào hoạt động đúng cách.

Mã này sẽ lặp qua từng trang tính trong sổ làm việc và tính toán lại từng trang một:

1234567 Sub Recalculate_Workbook ()Dim ws As WorksheetĐối với mỗi ws trong Worksheetsws. Tính toánTuần tiếp theoKết thúc Sub

Mã này sẽ hoạt động tốt nếu tất cả các trang tính của bạn là "độc lập", nghĩa là không có trang tính nào của bạn chứa các phép tính tham chiếu đến các trang tính khác.

Tuy nhiên, nếu trang tính của bạn tham chiếu đến các trang tính khác, thì các tính toán của bạn có thể không cập nhật đúng cách. Ví dụ: nếu bạn tính Sheet1 trước Sheet2, nhưng công thức của Sheet1 dựa trên các phép tính được thực hiện trong Sheet2 thì công thức của bạn sẽ không chứa các giá trị cập nhật nhất.

Bạn cũng có thể thử chọn tất cả các trang tính cùng một lúc và tính toán biểu tính:

12 ThisWorkbook.Sheets.SelectActiveSheet.Calculate

Tuy nhiên, điều này sẽ gây ra cùng một vấn đề.

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