2008-09-27 26 views

Trả lời

14

tôi sử dụng cả trong những giải pháp đề xuất:

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
... 
... 
... 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
0

Bạn có thể tắt tính toán tự động trong hộp thoại tùy chọn, nó đặt nó để nó chỉ tính khi bạn nhấn F9.

+0

vĩ mô của tôi chỉ chạy khi tôi thực hiện nó vì vậy tôi tốt trong lĩnh vực này, nhưng tôi không muốn xem excel sao chép xung quanh dữ liệu (theo quy định của macro), chỉ kết quả cuối cùng – Oskar

2

Application.ScreenUpdating = False

Và tất nhiên đặt lại thành True khi bạn hoàn tất, ngay cả khi lỗi được tăng lên. Ví dụ:

Public Sub MyMacro 
    On Error GoTo ErrHandler 
    Application.ScreenUpdating = False 
    ... do my stuff that might raise an error 
    Application.ScreenUpdating = True 
    Exit Sub 
ErrHandler: 
    Application.ScreenUpdating = True 
    ... Do something with the error, e.g. MsgBox  
End Sub 
+0

làm cách nào để đảm bảo tôi lấy lại sau khi có lỗi? – Oskar

+0

Tôi đã thêm một ví dụ để hiển thị điều này. – Joe

1

Building khi Joe và Seer (này sử dụng cú pháp cũ vì vậy nó tương thích với VBA của Office 2000):

On Error Goto AfterCalculation 
Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 
... 

AfterCalculation: 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 
2

Tôi cũng thích sử dụng cả hai giải pháp được đề xuất, mà còn giữ chế độ tính toán trước đó của người dùng.

Đối với ứng dụng đặc biệt này này có thể là không có vấn đề gì, nhưng nó thường là thực hành tốt nhất để cho những người sử dụng có các cài đặt của họ được phục hồi sau khi làm thủ thuật xong:

Application.ScreenUpdating = False 
PreviousCalcMode = Application.Calculation 
Application.Calculation = xlCalculationManual 
    ... 
    ... 
    ... 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

NB. Nó cũng sẽ đáng giá thời gian của bạn để chèn một số lỗi xử lý mà bật Application.ScreenUpdating nên một lỗi xảy ra trong mã khác rực rỡ của bạn;) Nếu bộ nhớ phục vụ cho tôi đúng, Excel sẽ không hiển thị bất kỳ errormessages vv khi ScreenUpdating = false. Something như thế này:

Sub DoSomeThing 


On Error Goto DisplayError 

Application.ScreenUpdating = False 
PreviousCalcMode = Application.Calculation 
Application.Calculation = xlCalculationManual 
    ... 
    ... 
    ... 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

Exit Sub 

DisplayError: 
Application.Calculation = PreviousCalcMode 
Application.ScreenUpdating = True 

MsgBox Err.Description 
End 'This stops execution of macro, in some macros this might not be what you want' 
    '(i.e you might want to close files etc)' 
End Sub 
Các vấn đề liên quan