2008-09-30 44 views

Trả lời

49

Những dòng này sẽ làm các trick:

ActiveSheet.EnableCalculation = False 
ActiveSheet.EnableCalculation = True 

Edit: Phương pháp .Calculate() sẽ không làm việc cho tất cả các chức năng, tôi thử nghiệm nó trên một tờ với các chức năng mảng add-in. Các tờ sản xuất tôi đang sử dụng là phức tạp, đủ Tôi không muốn thử và thử nghiệm .CalculateFull() phương pháp, do đó, nó có thể làm việc.

+1

Trên thực tế, có rất .Calculate() và .CalculateFull() phương pháp cho rằng, trên các cấp độ khác nhau. – GSerg

+1

Tôi đã thử nghiệm Tính toán trên một trang tính và không phải tất cả các chức năng trong ô đều tính toán lại. Bạn cũng có thể làm điều đó bằng cách chuyển đổi 'bẩn' bit, nhưng tôi thấy đây là giải pháp dễ nhất. –

+0

Sử dụng thuộc tính 'EnableCalculation' là một ý tưởng hay, bởi vì nó cho phép một trang tính được tính toán lại trên cấp độ Bảng tính. Ngược lại, 'Application.CalculateFull' buộc tính toán đầy đủ tất cả dữ liệu, không chỉ trong một Worksheet hoặc Workbook, mà còn trong ** tất cả các workbook mở **! Điều này có thể là quá mức cần thiết, đặc biệt là vì người dùng có thể mở một số sổ làm việc không liên quan, có khả năng phức tạp. – ricovox

14

này nên làm các trick ...

'recalculate all open workbooks 
Application.Calculate 

'recalculate a specific worksheet 
Worksheets(1).Calculate 

' recalculate a specific range 
Worksheets(1).Columns(1).Calculate 
+1

xem nhận xét về câu trả lời của tôi –

3

Bạn cũng có thể thử

Application.CalculateFull 

hoặc

Application.CalculateFullRebuild 

nếu bạn không nhớ xây dựng lại tất cả các workbook mở, chứ không phải không chỉ là trang tính hoạt động. (CalculateFullRebuild cũng xây dựng lại các phụ thuộc.)

6

Đôi khi Excel sẽ nấc cục và cần khởi động lại để áp dụng lại một phương trình. Điều này xảy ra trong một số trường hợp khi bạn đang sử dụng các công thức tùy chỉnh.

Hãy chắc chắn rằng bạn có kịch bản sau đây

ActiveSheet.EnableCalculation = True 

Áp dụng lại phương trình của sự lựa chọn.

Cells(RowA,ColB).Formula = Cells(RowA,ColB).Formula 

Điều này sau đó có thể được lặp lại nếu cần.

2

Tôi gặp sự cố khi tắt hình nền (hình mờ DRAFT) trong VBA. Thay đổi của tôi không hiển thị (được thực hiện với phương pháp Sheets(1).PageSetup.CenterHeader = "") - vì vậy tôi cần một cách để làm mới. Cách tiếp cận ActiveSheet.EnableCalculation một phần đã làm các trick, nhưng không bao gồm các tế bào không sử dụng.

Cuối cùng tôi tìm thấy những gì tôi cần với một lót mà làm biến mất hình ảnh khi nó đã không còn thiết lập: -

Application.ScreenUpdating = True

Các vấn đề liên quan