Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1584to1588
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Code schneller machen
05.10.2017 18:18:20
Frank
Hallo Zusammen!
Ich habe mir zum Löschen bestimmter Zellbereiche folgenden Code gebastelt. Ich finde aber es dauert sehr lange, warum nur. Mit meinen bescheidenen Kenntnissen stoße ich da an meine Grenzen. Für jede Hilfe dankbar!
Gruß Frank H.
Application.ScreenUpdating = False
For lng = 10 To 40
For c = 3 To 48 Step 4
Sheets("Dplan").Cells(lng, c) = ""
Sheets("Dplan").Cells(lng, c + 1) = ""
Next c
Next lng
Application.ScreenUpdating = True

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code schneller machen
05.10.2017 18:28:37
Hajo_Zi
warum den Bereich nicht mit einmal löschen?

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
AW: Code schneller machen
05.10.2017 18:31:08
Frank
Hallo Hajo!
Weil in den anderen Zellen die bestehenden Daten erhalten bleiben sollen!
Gruß Frank H.
AW: Code schneller machen
05.10.2017 18:30:10
ChrisL
Hi Frank
Application.ScreenUpdating = False
For c = 3 To 48 Step 4
With Sheets("Dplan")
.Range(.Cells(10, c), .Cells(40, c + 1)).ClearContents
End With
Next c
Wenn du Formeln hast, noch die automatische Berechnung ausschalten.
cu
Chris
Anzeige
AW: Code schneller machen
05.10.2017 18:34:32
Frank
Hallo Chris!
Spitze, funzt wie gewünscht! danke!
Gruß Frank H.
AW: Code schneller machen
05.10.2017 18:31:20
Nepumuk
Hallo Frank,
einfach so:
Sheets("Dplan").Range("C10:AV40").ClearContents
Gruß
Nepumuk
AW: Code schneller machen
05.10.2017 18:34:43
AlterDresdner
Hallo Frank,
wenn die zu löschenden Bereiche Quellzellen für weitere Berechnungen sind, sollte die Abschaltung der Berechnung helfen:
Application.Calculation = xlCalculationManual
nach Application.screenupdating=false
und vor ...= True wieder einschalten
Application.Calculation = xlCalculationAutomatic
Die Hajo-Bemerkung 'gleich Bereich löschen' ist richtig, dann könnte das Ganze so aussehen:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For c = 3 To 48 Step 4
With Sheets("DPlan")
.Range(.Cells(10, c), .Cells(40, c + 1)).ClearContents
End With
Next c
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

Anzeige
AW: Code schneller machen
05.10.2017 19:11:52
Daniel
Hi
wenn der Zellbereich fix ist (dh die Start und Endwerte der Schleife sind keine Variablen), dann kannst du das auch so lösen:
1. Fasse die Zellen, die gelöscht werden müssen in einem Namen zusammen.
hierzu markierst du sie (mit gedrückter STRG-Taste "C10:D40;G10:H40;K10:L40;...") und schreibst dann den Namen ins Namensfeld (links oben, vor der Bearbeitungszeile).
Im Namensmanager kannst du diesen Namen dann bearbeiten.
Nehmen wir an der Name sei "XXX"
2. Im Makro kannst du Zellen dann über die Range-Funktion mit dem Namen ansprechen:
Range("XXX").ClearContents
das hat, neben dem extrem kurzen und sehr schnellen Code auch noch weitere Vorteile:
- Wenn du Zellen einfügst oder verschiebst, passt sich dieser Name automatisch an.
dann brauchst du bspw im Code nichts ändern, wenn du eine weitere Überschriftenzeile hinzugfügst und der Bereich dann von 11-41 geht.
- du kannst den Namen auch beim normalen Arbeiten mit Excel über das Namesfeld verwenden, um die Zellen zu selektieren.
Gruß Daniel
Anzeige
AW: zur Erläuterung
05.10.2017 19:25:38
Daniel
Jede Änderung eines Zellwertes löst in Excel eine Vielzahl von Aktionen aus.
Einige kann man abschalten, (Bildschirmaktualisierung, Neuberechnung), andere wiederum nicht.
wenn du jede Zelle einzeln änderst, müssen auch diese Aktionen jedesmal ausgeführt werden.
Wenn du die Zellen jedoch im Block änderst, kann Excel viele dieser Aktionen für alle Zellen auf einmal ausführen.
Im Prinzip wie im Supermarkt: Wenn du 20 Flaschen Bier kaufen willst, gehst du ja auch nicht 20x vom Eingang zur Getränkeabteilung und von dort zur Kasse, sondern du läufst 1x und holst gleich ne ganze Kiste.
Gruß Daniel
Anzeige
AW: Code schneller machen
05.10.2017 19:38:09
Gerd
Moin Frank!
Intersect(Range( _
"C:D,H:I,M:N,R:S,W:X,AB:AC,AG:AH," _
& "AL:AM,AQ:AR,AV:AW,BA:BB,BF:BG,BK:BL"), _
Range("10:40")).ClearContents
Zusätzlich kannst du noch "GetMoreSpeed" einbauen (á la Alter Dresdner).
Gruß Gerd
AW: Code schneller machen
05.10.2017 19:46:03
Frank
Hallo euch Allen!
Ihr seid alle Spitze und wie immer äußerst hilfsbereit, dafür gebührt euch mein allerherzlichster Dank. Ich habe wieder dazu gelernt.
Zu Daniels Bierkasten, ich habe 2 Arme, also 2 Kisten!
Gruß Frank H.
AW: Code schneller machen
05.10.2017 20:01:38
Daniel
warum GetMoreSpeed?
wenn das "GetMoreSpeed" eine signifikante Verbesserung der Laufzeit bringt, kann der Code noch optimiert werden.
Je weniger man in den Einstellungen verändert, um so besser.
Guter Code kommt zu 99% ohne diese Maßnahmen aus.
Gruß Daniel
Anzeige

16 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige