Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1080to1084
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

For Next Schleife - Performance

For Next Schleife - Performance
19.06.2009 17:54:19
Christoph
Hallo VBA-Experten!
Bin im VBA-Sektor erst seit 3 Tagen aktiv (Selbsteinschulung :-) ). Habe jetzt aber leider ein rießiges Problem und bitte ganz dringend um Eure Hilfe:
In meinem Bericht (siehe Anhang - https://www.herber.de/bbs/user/62579.zip)
soll folgendes passieren:
Der Betrag pro Zeile in Spalte G soll aufgeteilt werden:
Entweder mit Methode "1" (Spalte K zum Ausfüllen) in der 1. Tabelle (Spalten N bis U) mit absoluten Beträgen, dann wird in der 2. Tabelle (X bis AE) automatisch der prozentuelle Anteil errechnet. Nimmt man Methode "2" dann schließt sich die Zeile in Tabelle 1 zur Eingabe und in Tabelle 2 kann die Aufteilung in Prozent erfolgen (dabei automatische Berechnung der absoluten Beträge in Tabelle 1).
Leider lässt die Performance zu wünschen übrig, denn jedes mal, wenn ein neuer Wert eingegeben wird rechnet das Makro auf Grund der Schleife jede einzelne Position durch. Das dauert ganz schön lange bei 266 Zeilen mal 8 Spalten.
Hast Du/habt Ihr vielleicht eine Idee, wie ich das Makro umbauen könnte...das z.B. immer nur die eingegebene Zelle in der jeweils anderen Tabelle berechnet wird? Sonst dauert es nämlich ewig, bis ich mit dem Ausfüllen fertig bin! :-)
Vielen, vielen Dank, ein schönes Wochenende und liebe Grüße
Christoph
https://www.herber.de/bbs/user/62579.zip

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

Betreff
Datum
Anwender
Anzeige
Grosse Code-Optimierungs-Möglichkeiten
19.06.2009 17:58:46
NoNet
Hallo Christoph,
eins vorweg : Den Code kann man um ca. 80% kürzen wenn man ARRAY-Variablen verwendet und um weiter eca. 50% wenn man die IF-Anweisungen zusammenfasst !
Intensiver habe ich mir den Code jetzt nicht angeschaut, da ich gleich die Flügel ausbreite und ins WE "fliege".
Gedulde dich also noch ein wenig... ;-)
Gruß, NoNet
AW: Grosse Code-Optimierungs-Möglichkeiten
19.06.2009 18:06:31
Christoph
Hallo NoNet!
Vielen herzlichen Dank für Deine schnelle Antwort.
Es gibt bestimmt viel elegantere Lösungen...leider kenne ich diese aber, aufgrund meiner mangelnden Erfahrungen mit VBA, (noch) nicht. Denkst Du, dass neben der Code-Verkürzung auch die Durchlaufzeit der Schleife verbessert werden kann?
Bitte sei so nett und gib mir ein paar Tipps!
Nochmals herzlichen Dank und ich wünsche Dir noch ein angenehmes Wochenende!
LG Christoph
Anzeige
AW: Grosse Code-Optimierungs-Möglichkeiten
19.06.2009 19:02:04
Raist10
Also erstmal wäre die einfachste und schnellste Performance-Steigerung, wenn Du das im Worksheet_Change Ereigniss eingebettete Target nutzt.
Mit Target.Row bekommst Du nämlich die Zeile in der die Änderung statt gefunden hat.
Wenn Du nun die erste For-Schleife rausnimmst und stattdessen die Variabele iZeile wie folgt füllst:
iZeile = Target.Row
Werden alle Berechnungen auch nur für die Zeile in der die Änderung statt gefunden hat durchgeführt.
Ansonsten stimme ich NoNet zu ... da wäre sicherlich einiges an Zusammenfassung möglich und so wie es aussieht auch Arrays nicht schlecht.
Wieso Du einzelne Zellen als Bereiche deklarierst will mir allerdings überhaupt nicht einleuchten. Eine Referenzierung über Objekte bringt sicherlich einen Performance-Gewinn, aber auch nur wenn Sie dann letztendlich per With für eine Reihe von Aktionen genutzt werden. Das spätere Abfragen der Bereiche die nur aus einer einzigen Zelle bestehen mit For Each rng in Bereich ... wie gesagt, ohne jetzt tiefer in den Code einzusteigen nicht wirklich nötig, bzw. kostet auch Performance.
Aber wenn Du wie oben anstatt mit Schleife für jede Zeile mit Target.Row arbeitest und somit nur die Zeile in der sich der geänderte Wert befindet verarbeitest ist der Performance-Gewinn eh bei Faktor 50 oder so und somit alle anderen Performance-Steigerungen nicht mehr wirklich nötig.
Gruß
Rainer
Anzeige
AW: Grosse Code-Optimierungs-Möglichkeiten
21.06.2009 19:21:44
Christoph
Hallo Rainer, hallo NoNet!
Vielen Dank für die Infos bzgl. "Target".
Könntet Ihr mir nur auch bitte mit dem Code helfen :-) .....inwiefern muß ich diesen ändern (ev. mit Beispiel aus meinem bereits verfassten Code)?
Vielen Dank im Voraus!
LG Christoph
AW: Grosse Code-Optimierungs-Möglichkeiten
22.06.2009 16:06:46
fcs
Hallo Christoph,
hier mal dein Code in der hochgeladenen Textdatei mit Prüfung der Target-Zellen.
Außerdem hab ich einige If-Elseif- und If-Konstruktionen durchSelect-Case-Anweisungen ersetzt.
Macht den Code übersichtlicher und auch etwas schneller.
Gruß
Franz
https://www.herber.de/bbs/user/62644.txt
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige