Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
456to460
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
456to460
456to460
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige