Mein Makro aktualisiert eine große Tabelle mit Zahlen, aber es läuft sehr langsam, da Excel das Ergebnis berechnet, während es es berechnet. Wie höre ich auf mit Excel, um die Ausgabe zu rendern, bis das Makro fertig ist?Wie verhindere ich, dass Excel das Arbeitsblatt rendert, wenn mein Makro es berechnet?
Antwort
Ich benutze beide vorgeschlagenen Lösungen:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
...
...
...
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Sie können die automatische Berechnung im Optionsdialog ausschalten, sie wird so eingestellt, dass sie nur berechnet, wenn Sie F9 drücken.
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
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
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
- 1. Wie verhindere ich, dass Tabellendaten mein Layout beschädigen?
- 2. Wie verhindere ich, dass mein Schreiber die Datei überschreibt?
- 3. Wie verhindere ich, dass mein KeyEvent beide Objekte neu erstellt?
- 4. Wie verhindere ich, dass mein Apache2-Server die missile_launch_codes.ini ausliefert?
- 5. Führen Sie mein Makro, wenn Excel-Zelle ändert
- 6. Wie verhindere ich, dass die Menüleiste nach unten bewegt wird, wenn mein Popover geöffnet ist?
- 7. Excel Dropdown bewegen, wenn Makro
- 8. Excel VBA Makro
- 9. Excel Arbeitsblatt Split
- 10. Preis berechnet aus der Tabelle in Excel-Lookup oder Makro
- 11. Wie verhindere ich, dass Hibernate Zeichenfolgen schneidet?
- 12. Wie verhindere ich, dass Chrome Eingabefelder vorfüllt?
- 13. Wie verhindere ich, dass Browser Cookies speichern?
- 14. Wie verhindere ich, dass IVsBuildPropertyStorage.SetItemAttribute Sonderzeichen löscht?
- 15. Wie verhindere ich, dass sich ein WPF-Combobox-Popup löst, wenn sich das Combobox bewegt?
- 16. Wie verhindere ich, dass Passwörter gespeichert werden?
- 17. Wie ändere ich meine Arbeitsblatt-Array-Referenz in meinem Makro
- 18. Wie verhindere ich, dass IIS Websites kompiliert?
- 19. Wie verhindere ich, dass Formulareingabedaten zurückgesetzt werden, wenn ich das Formularelement entferne und erneut anhefte?
- 20. Excel berechnet Feld - Fall, wenn Rückgabewert
- 21. Wie kann ich sicherstellen, dass Benutzer mein Makro nach einem bestimmten Datum nicht ausführen können?
- 22. Wie verhindere ich das Kollabieren meiner Treeview?
- 23. Excel 2016: Aktives Arbeitsblatt ist nicht das sichtbare
- 24. Mein erstes Lisp-Makro; ist es undicht?
- 25. Wie verhindere ich, dass der Visual Studio-Debugger das Fenster fokussiert, wenn ein Haltepunkt erreicht wird?
- 26. R, Rexcel, erstellen Makro, das zählt Wörter in und Excel Arbeitsblatt
- 27. Kopieren Arbeitsblatt Makro stoppt etwas zu tun, wenn die Arbeitsmappe 50 Arbeitsblatt trifft
- 28. Wie verhindere ich, dass SQL Server 2008 R2 versucht, ein Paket zu installieren, wenn ich mein Setup-Projekt erstelle?
- 29. Arbeitsblatt in Excel mit VBA löschen
- 30. Aufruf Excel Arbeitsblatt-Funktion von Excel-Zelle
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