Excel cho phép bạn kiểm soát khi nó tính toán lại một trang tính. Thông thường, Excel sẽ tính toán lại bất cứ lúc nào bạn thay đổi nội dung nào đó trong ô. Nếu bạn đang làm việc với các trang tính rất lớn có nhiều công thức trong đó, bạn có thể muốn tắt tính năng tính toán lại tự động. Bạn có thể tắt tính toán lại tự động bằng các điều khiển trên tab Tính toán của hộp thoại Tùy chọn.

Macro của bạn cũng có thể buộc Excel tính toán lại trang tính của bạn. Nếu bạn đã bật tính toán lại tự động, thì bất kỳ thay đổi nào mà macro của bạn thực hiện trong một trang tính sẽ buộc Excel phải tính toán lại. Nếu bạn đã tắt tính toán lại tự động, thì bạn có thể sử dụng phương pháp Tính toán để tính toán lại trang tính:

ActiveSheet.Calculate

Tất nhiên, nếu tính toán lại mất khá nhiều thời gian để thực hiện, bạn có thể muốn kiểm tra xem liệu tính toán lại có cần thiết hay không trước khi thực sự bắt buộc thực hiện. Có vẻ như không có cờ nào bạn có thể kiểm tra trực tiếp để xem có cần tính toán lại hay không. Việc gần nhất là kiểm tra thuộc tính Đã lưu của đối tượng Workbook. Thuộc tính này về cơ bản hoạt động như một “cờ bẩn” cho toàn bộ sổ làm việc. Nếu có các thay đổi chưa được lưu trong sổ làm việc, thì thuộc tính Đã lưu là Sai; nếu mọi thứ được lưu, thì nó là True.

Làm thế nào để điều này giúp bạn tìm ra liệu có cần thiết phải tính toán lại hay không?

Hãy nhớ rằng tính toán chỉ cần thiết khi có những thay đổi trong trang tính. Thay đổi bất kỳ thứ gì trong trang tính cũng sẽ đặt thuộc tính Đã lưu của sổ làm việc thành Sai. Do đó, bạn có thể kiểm tra thuộc tính Đã lưu trước khi thực hiện tính toán lại, như được hiển thị ở đây:

If Not ActiveWorkbook.Saved Then     ActiveSheet.Calculate End If

Tất nhiên, chỉ có một vấn đề với cách tiếp cận này — thuộc tính Đã lưu chỉ được đặt thành Đúng nếu sổ làm việc thực sự được lưu. Điều này có nghĩa là bạn có thể tính toán lại nhiều lần mà không thực sự cần phải làm như vậy, trừ khi bạn kết hợp lưu và tính toán lại với nhau, như được hiển thị ở đây:

If Not ActiveWorkbook.Saved Then     ActiveSheet.Calculate     ActiveWorkbook.Save End If

Sự khôn ngoan khi tiếp cận vấn đề này theo cách này phụ thuộc vào bản chất của tình huống cụ thể của bạn. Nếu việc lưu sổ làm việc mất nhiều thời gian hơn so với việc chỉ đơn giản tính toán lại, thì phương pháp này sẽ không hoạt động. Tuy nhiên, nếu việc tính toán lại mất nhiều thời gian hơn (rất có thể xảy ra với một số loại phép toán), thì cách tiếp cận này có thể hoạt động tốt.

_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 (2323) á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: