Anzeige
Archiv - Navigation
1020to1024
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
Inhaltsverzeichnis

VBA Code mal langsam - mal schnell

VBA Code mal langsam - mal schnell
07.11.2008 09:11:00
marc
Hallo.
Habe eine VBA Prozedur die aus einem Tabellenblatt Werte in ein anderes schreibt und Formatierungen einträgt. Gestern lief die Routine noch sehr schnell (ca. 90 sec). Es sind mehr als 700 Zeilen mit 3 Spalten die übertragen werden. Heute braucht das ganze bis zu 10 Minuten, bei dem gleichen Code.
Hab es auch schon auf einem anderen Rechner getestet, ohne Erfolg.
Bei der Programmierung wurde die Berechnung und die Bildschirmaktualisierung ausgeschaltet. Es ist kein Activate und select im code bzw. werden diese Zeilen nur zu Prüfzwecken eingeschaltet.
Vielleicht hatte einer dasselbe Phänomen schon.
Marc

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Code mal langsam - mal schnell
07.11.2008 09:20:00
David
Hallo Marc,
du solltest die Option
If Date()="07.11.2008" Then Slow = True
entfernen, oder alternativ deinen Code posten. ;-)
Gruß
David
PS: Ich werde zwar nicht helfen können, weil mein eigener VBA-Level nur "bescheiden" ist, aber ohne deinen Code wirst du sicher keine vernünftige Antwort bekommen.
AW: VBA Code mal langsam - mal schnell
07.11.2008 09:50:00
Matthias
Hi,
Naja, man kann kann schon so "Tipps" geben wie

Appllication.Calculation = xlCalculationManual
' ... dein Code
Application.Calculation = xlCalculationAutomatic


Aber die kann man auch zuhauf in der Recherche finden.
Gruß Matthias

Anzeige
AW: VBA Code mal langsam - mal schnell
07.11.2008 10:10:29
Hajo_Zi
Hallo Matthias,
das Stand aber schon in der Frage

Bei der Programmierung wurde die Berechnung und die Bildschirmaktualisierung ausgeschaltet.


Dein Tip ist aber auch falsch, man sollte am Ende des Programm die Berechnung auf das einstellen was Sie bei Start des Makros war.

AW: VBA Code mal langsam - mal schnell
07.11.2008 10:10:52
marc
Hallo.
@David
Ich denke es liegt nur bedingt am Code, vielmehr wird es ein Excel Konfigurationsproblem (oder sonst was, Bug, ...) sein. Da es ja mit demselben Code manchmal "schnell" geht und manchmal nicht. Gerade eben lief es wieder in 2 Minuten durch.
@ Matthias
Wie in meinem ersten Posting beschrieben.

... Bei der Programmierung wurde die Berechnung und die Bildschirmaktualisierung ausgeschaltet. ... 


hab ich deinen Vorschlag schon berücksichtigt
Ich mach jetzt nochmal nen Rechnerneustart und schau dann ob es immer noch "schnell" geht.
Marc

Anzeige
AW: VBA Code mal langsam - mal schnell
07.11.2008 11:41:00
Luschi
Hallo Marc,
um die Arbeit bei Vba-Code zu beschleunigen, muß man am Anfang drei Excel-Methoden umschalten:
- Bildschirmaktualisierung ausschalten
- Berechnung auf Manuell
- Ereignisausführung ausschalten
Suche mal nach "getMoreSpeed", da sind alle drei Aktivitäten vereint.
Gruß von Luschi
aus klein-Paris
AW: VBA Code mal langsam - mal schnell
07.11.2008 12:02:00
marc
Hallo Luschi.
Wie im ersten Posting beschrieben hab ich

- Bildschirmaktualisierung ausschalten
- Berechnung auf Manuell


ausgeschaltet.
Aber was ist


- Ereignisausführung ausschalten


Da muss ich mal nachlesen und testen.
@alle
Ich wollt es euch eigentlich ersparen meine rudimentären Programmierkünste online zu stellen.
Werd aber ein Demodatei erstellen und den Code Reinpacken.
Marc

Anzeige
AW: VBA Code mal langsam - mal schnell
07.11.2008 13:29:00
Luschi
Hallo Marc,
schau mal hier: https://www.herber.de/forum/archiv/976to980/t977234.htm
Da ist die Prozedur 'getMoreSpeed' beschrieben.
Am Anfang des Makros: getMoreSpeed True
am Ende: getMoreSpeed False
Wichtig ist hier auch : Application.EnableEvents (Ereignisausführung)
Das heißt, wenn per Vba der Inhalt einer Zelle geändert wird, dann treten alle Ereignisse ein, die mit dieser Zelle in Verbindung stehen. Meist sollen diese Ereignis-Prozeduren nur wirken, wenn der User per Tastatur Daten eingibt. Deshalb muß man bei Eintragungen in Zellen per Makro diese Ereignissteuerung am Anfang ausschalten und zum Schluß des Makros wieder aktivieren.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA Code mal langsam - mal schnell
07.11.2008 23:49:00
Daniel
Hi
bei einigermassen geschickter Programmierung braucht man diese Tricks nicht.
Gruß, Daniel
AW: VBA Code mal langsam - mal schnell
07.11.2008 10:12:00
ransi
HAllo

Gestern lief die Routine noch sehr schnell (ca. 90 sec).


Für 700 Zeilen mit 3 Spalten ist das noch vieeeeeel zu lange.
Zeig uns doch mal bitte den Code. Am besten mit Beispieldatei.
ransi

AW: VBA Code mal langsam - mal schnell
07.11.2008 12:10:00
marc
Hallo.
Hier die Datei mit dem Code.
Mittlerweile ist mir die Idee gekommen den Kopiervorgang nicht mehr zeilenweise zu machen, sondern Blockweise. Das würde den Code an sich schneller machen, erklärt jedoch die unterschiedliche Laufzeiten bei gleichem Code nicht.
https://www.herber.de/bbs/user/56591.xls
Marc
Anzeige
AW: VBA Code mal langsam - mal schnell
07.11.2008 23:59:50
Daniel
Hi
es ist mir jetzt zu aufwendig und zu spät, deinen Code zu analysieren, aber folgenden Hinweis kann ich dir noch geben:
wenn du du Variablen x und y und z als LONG deklarien willst, dann musst du das so formulieren:

DIM x as Long, y as long Long, z as long


wenn du es hingegen so formulierst:


Dim x, y, z as Long


dann wird nur z als LONG dimensionert, x und y hingegen als VARIANT, mit den entsprechenden Nachteilen bezgl. Speicherplatzverbrauch und Geschwindigkeit.
ob das allerdings für dein Problem relevant ist, weiß ich nicht.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige