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

bei Excel 2002 wirds immer langsamer

bei Excel 2002 wirds immer langsamer
04.11.2007 16:05:00
Charlybraun
Hilfe, mein Programm wird immer langsamer.
Ich hab auf 2003 ein Programmchen gechrieben, das Reisekosten abrechnen soll.
Wenn ich dieses auf 2002 laufen lasse, dann:
1) dauert es viel länger als bei 2003
Warum? und kann man dagegen was tun (ausser die selects, etc. vermeiden)
2) mit jeder programmablauffolge wird das Programm in der Berechnungsphase
immer langsamer.
hab blos einige Variablen die ich mit Long oder String definiert habe
Dim L As Long
Dim ZL As Long
und einige Tabellenkürzungen a la:
ZL = 120
ZL = ActiveSheet.UsedRange.Count
For L = 1 To ZL
If Len(ActiveCell.Value) = 0 _
Then ActiveCell.EntireRow.Delete _
Next L
oder eine Zellen in Werteumwandlung
Sheets("KUNDE1bereich").Select
On Error Resume Next
For Each Zelle In ActiveSheet.UsedRange
If Left(Zelle.Formula, 1) = "=" Then _
Zelle.Formula = Zelle.Value
Next
Ich denk mal, irgend ein Cache füllt sich nach und nach auf...
hab keine ahnung welche Caches bzw. wie man die zwischendurch mal voll entleert
Bräuchte bitte dringen Rat.
vielen dank
charlybraun

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bei Excel 2002 wirds immer langsamer
04.11.2007 16:53:50
Josef
Hallo Charly,
zeig mal den gesamten Code.
Gruß Sepp

AW: bei Excel 2002 wirds immer langsamer
04.11.2007 17:17:00
Daniel
Hi
ohne jetzt deinen genauen Code zu kennen, ein paar Böcke sind da schon noch drin:
Beispiel:

On Error Resume Next
For Each Zelle In ActiveSheet.UsedRange
If Left(Zelle.Formula, 1) = "=" Then _
Zelle.Formula = Zelle.Value
Next


hier sollen die die Formeln durch ihre Werte ersetzent werden.
warum prüfst du erst jede Zelle, ob es eine Formel ist? bei Festwerten ist die Formel ja gleich dem Wert, daher kann man das auch einfacher und schneller so schreiben:


activesheet.usedrange.formula = activesheet.usedrange.formula.value


2. Beispiel dashier


ZL = 120
ZL = ActiveSheet.UsedRange.Count
For L = 1 To ZL
If Len(ActiveCell.Value) = 0 _
Then ActiveCell.EntireRow.Delete _
Next L


das könnte man auch einfacher formulieren:


activesheet.columns(activecell.column).specialcells(xlcelltypblanks).entirerow.delete


allerdings sollten dann schon die Formeln in Werte umgewandelt sein.
Gruß, Daniel

Anzeige
AW: bei Excel 2002 wirds immer langsamer
05.11.2007 11:07:00
Charlybraun
Erstmals vielen Dank für Deine Hilfe...
da mit den Formeln ist sehr gut!
Die Kürzung der Datenbank mit den xlcelltypeblanks entirerow...
hat aber den fürchterlichen Nachteil,
dass er auch Zeilen oberhalb meines einzigen Eintrages in jener spalte hat
(die Kürzung von unten nach oben sollte aufhören, sobald er einen Eintrag findet und
die Zeilen oberhalb des Eintrages in der Spalte und der Eintrag selber, sollen übrig bleiben)
Ich bin mittlerweile auch draufgekommen, dass genau diese Kürzung schuld ist, dass 2002 immer langsamer wird!
Vielleicht fällt Dir noch was ein ...
aber danke vielmals für Deine Unterstützung.
Charlybraun

Anzeige
AW: bei Excel 2002 wirds immer langsamer
05.11.2007 19:13:05
Daniel
Hi
wenn diese Kürzungen schuld daran sind, daß Excel langsamer wird, hilft es manchmal, alle leeren Zeilen und Spalten unter und neben dem benutzten Bereiches zu löschen.
Excel benutzt diese leeren Zellen als zwischenspeicher und vergisst manchmal, da aufzuräumen, das vollständige Löschen hilft dann manchmal (hab ich zumindest mal irgendwann hier im Forum gelesen, schaden kanns auf jeden Fall nicht).
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige