Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ein langsamer Coder

Forumthread: Ein langsamer Coder

Ein langsamer Coder
24.07.2004 18:06:42
marc
hallo zusammen,
der unten stehender Coder braucht 4 Minuten lang fuer die Abarbeitung.
Wie kann ich den Coder schneller machen ?
marc.

Option Explicit
Sub SheetsValue_delete()
Const RN1 = "S7:V11"
Const RN2 = "S16:V20"
Const RN3 = "S28:V32"
Const RN4 = "S37:V41"
Const RN5 = "X7:X11"
Const RN6 = "X16:X20"
Const RN7 = "X28:X32"
Const RN8 = "X37:X41"
Const RN9 = "V12"
Const RN10 = "V21"
Const RN11 = "XV33"
Const RN12 = "V42"
Dim fd() As Variant, I%, ws As Worksheet
On Error Resume Next
fd = Array("90.1", "90.2", "90.3", "93.1", "93.2", "93.3", "93.4", "90A", "93B", "BCC", "ECC")
For I = 0 To UBound(fd)
Set ws = Worksheets(fd(I))
ws.Range(RN1).ClearContents
ws.Range(RN2).ClearContents
ws.Range(RN3).ClearContents
ws.Range(RN4).ClearContents
ws.Range(RN5).ClearContents
ws.Range(RN6).ClearContents
ws.Range(RN7).ClearContents
ws.Range(RN8).ClearContents
ws.Range(RN9).ClearContents
ws.Range(RN10).ClearContents
ws.Range(RN11).ClearContents
ws.Range(RN12).ClearContents
Next I
Set ws = Nothing
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein langsamer Coder
Michi
Meine Vermutung:
Das muss andere Gründe haben. Ich habe das gerade getestet, und das teil läuft innnerhalb weniger Millisekunden ab.
Was ist denn da drin in den Excel-Sheets? Viele Zellbezüge und muss er deshalb viel rechnen? Oder hast du ne Menge Ereignisse in den Sheets abgefragt?
AW: Ein langsamer Coder
24.07.2004 19:00:28
Philipp
Hallo Marc
Ich stimme Michi zu. Dein Code müsste eigentlich schnell sein.
Ich habe den Code testhalber komplett umgeschrieben, da mir die For-Next-Schleife nicht gefiel. Auf 11 Blättern werden immer die gleichen 12 Bereiche gelöscht. Das ergibt 132 Lösch-Aktionen (11x12). Meine Lösungsvariante selektiert zuerst alle 11 Blätter als Gruppe, anschliessend die 12 Bereiche und führt erst dann die Löschung durch. Da nur eine einzige Lösch-Aktion erfolgt, könnte dieser Code erheblich schneller sein (meine Annahme, hab's nicht gemessen).

Sub SheetsValue_delete()
Const RN1 = "S7:V11"
Const RN2 = "S16:V20"
Const RN3 = "S28:V32"
Const RN4 = "S37:V41"
Const RN5 = "X7:X11"
Const RN6 = "X16:X20"
Const RN7 = "X28:X32"
Const RN8 = "X37:X41"
Const RN9 = "V12"
Const RN10 = "V21"
Const RN11 = "V33"
Const RN12 = "V42"
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Sheets(Array("90.1", "90.2", "90.3", "93.1", "93.2", "93.3", "93.4", "90A", "93B", "BCC", "ECC")).Select
Range(RN1 & "," & RN2 & "," & RN3 & "," & RN4 & "," & RN5 & "," & RN6 & "," & RN7 & "," & RN8 & "," & RN9 & "," & RN10 & "," & RN11 & "," & RN12).Select
Selection.ClearContents
Sheets("90.1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Gruss
Philipp
¦¦¦ xlam - Excel and more!
¦¦¦ http://195.186.84.74/index.htm
Anzeige
AW: Philipp in 4 Sec. ist alles geloescht.
marc
hallo Philipp,
soeben habe ich deine Arbeit ( Code ) getestet und wollte meinen Augen nicht trauen.
Danke fuer dein speed-Code.
marc.
AW: Philipp in 4 Sec. ist alles geloescht.
24.07.2004 21:29:47
Philipp
Wow, das ist ja gigantisch! Das heisst ja, dass der neue Code 60 Mal schneller ist. Damit habe ich wirklich nicht gerechnet.
Eigentlich war deine Lösung "schöner", weil mit Objektvariable (ws As Worksheet) und ohne Select/Selection.
Gruss
Philipp
¦¦¦ xlam - Excel and more!
¦¦¦ http://195.186.84.74/index.htm
Anzeige
AW: An Micha und Philipp....
marc
Hallo Michi , hallo Philipp,
sorry, dass ich mich nicht gemeldet habe musste kurz weg.
Danke fuer die Aufklaerung.Die 11 - Sheets beinhalten je 4 Diagramme
neben den Diagrammen habe ich zwei Tabellen mit Text und Zahlenwerten stehen.
Dort finden keine Berechnungen statt.Die Tabellen muss ich einmal in der Woche vom
Inhalt befreien.Befor neue Werte in die Tabellen kopiert werden will ich die Tab. von den alten Werten leer haben.Habt ihr villeicht eine alternative Loesung.
Was passiert, wen ich die alten Werte ueberschreibe ?
marc.
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige