2008-09-27 9 views

Antwort

14

Ich benutze beide vorgeschlagenen Lösungen:

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

Sie können die automatische Berechnung im Optionsdialog ausschalten, sie wird so eingestellt, dass sie nur berechnet, wenn Sie F9 drücken.

+0

mein Makro nur ausgeführt wird, wenn ich es ausführen so in dieser Hinsicht bin ich in Ordnung, aber ich will nicht, Excel Kopieren um die Daten sehen (wie vom Makro angegeben), nur das Endergebnis – Oskar

2

Application.ScreenUpdating = False

Und natürlich ist es wieder auf True wieder eingestellt, wenn Sie fertig sind, auch wenn ein Fehler ausgelöst wird. Beispiel:

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

Wie stelle ich sicher, dass ich es nach einem Fehler zurückbekomme? – Oskar

+0

Ich habe ein Beispiel hinzugefügt, um dies zu zeigen. – Joe

1

Aufbauend auf Joe und SEER (dies nutzt alte Syntax, so dass es mit VBA von Office 2000 kompatibel ist):

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

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

Ich bevorzuge auch die beiden vorgeschlagenen Lösungen, , sondern auch die vorherige Berechnungsmodus des Benutzers zu halten.

Für diese spezielle Anwendung dies kein großes Problem sein könnte, aber es ist in der Regel am besten Praxis haben die Benutzer ihre Einstellungen wiederhergestellt nach dem Eingriff beendet ist, lassen:

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

NB. Es wäre auch Ihre Zeit wert, eine Fehlerbehandlung einzufügen, die Application.ScreenUpdating startet, sollte ein Fehler in Ihrem ansonsten brillianten Code auftreten;) Wenn mir der Speicher recht tut, zeigt Excel keine Fehlermeldung, wenn ScreenUpdating = false ist. Etwas wie folgt aus:

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 
Verwandte Themen