Ich habe Probleme mit der Geschwindigkeit des Codes, der Spalten löscht. Der unten stehende Code dauert 5 Sekunden. Wenn ich das Dokument direkt vor dem Ausführen speichern möchte, dauert es nur 1 Sekunde. Die Einsparungen sind nicht groß, aber ich habe einen anständigen Computer und andere, die dieses Blatt ausführen, sind im Wesentlichen auf Thin Clients und ich habe viel mehr Code zum Ausführen. Auch wenn die Arbeitsmappe abgeschlossen ist, kann ich sie nicht speichern, da sie als Vorlage verwendet und nach Fertigstellung als neue Arbeitsmappe gespeichert wird. Die Anzahl der Zeilen mit Daten ist ~ 49.000 und ich habe dies auch zuerst ohne ClearContents
versucht.Excel VBA langsam zu löschen Spalte, es sei denn Dokument zuerst gespeichert
Gibt es eine Möglichkeit, dies zu beschleunigen, ohne das Dokument zuerst speichern zu müssen?
Sub GenerateOperations()
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
.CutCopyMode = False
End With
Dim OpSheet As Worksheet
Set OpSheet = Sheet3
Application.Calculation = xlCalculationManual
OpSheet.Range("A:C,E:G,L:Q").ClearContents
OpSheet.Range("A:C,E:G,L:Q").Delete xlShiftToLeft
Application.Calculation = xlCalculationAutomatic
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
End Sub
Warum sollte er das abstellen? Es wird dringend empfohlen, die Bildschirmaktualisierung zu deaktivieren, um die Leistung zu erhöhen –
Das würde es nicht beschleunigen – Rdster
Ja, wenn Sie es ausschalten, wird es schneller. Das Einschalten nach meiner Erfahrung ist unnötig und kann den Code verlangsamen, wenn unmittelbar danach ein anderes Sub aufgerufen wird. – Nick