Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1120to1124
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
Schleife zu langsam
Cimmer
Hi,
ich habe ein Makro das in einer Schleife für mehrere 100.000 Zeilen in 20 Spalten Berechnungen durchführt. Die Folge ist, dass das Makro fast 5 Minuten läuft. Der Startpunkt des Makros wird von Hand festgelegt (Startzelle).
Wie kann ich das Makro schneller machen?
Vielleicht kommt man ja irgendwie ohne Schleife aus?
Als Beispiel habe ich die Berechnung für 2 Spalten eingefügt.
Danke
Leon
Sub Schleife()
Dim Startzelle As Range
Dim intZeile, intZeileQ As Integer
Dim intSpalte As Integer
Dim A, h, s As Integer
A = 2
h = 15
s = 16
d = 235.2
r = 117.6
d0 = 18.4
Set Startzelle = Application.InputBox("Markieren Sie die Startzelle", Type:=8)
'Application.ScreenUpdating = False
intZeileQ = Startzelle.Row
intSpalte = Startzelle.Column
For intZeile = intZeileQ To Cells(Rows.Count, intSpalte).End(xlUp).Row
Cells(intZeile, h).Value = r - d0 - Cells(intZeile, A).Value
If Cells(intZeile, h).Value 

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

Betreff
Benutzer
Anzeige
AW: Schleife zu langsam
30.11.2009 13:49:38
Ramses
Hallo
Das Makro ist etwas schleierhaft.
1. "...If Cells(intZeile, h).Value <= r..."
Die Prüfung ergibt eigentlich keinen Sinn
r - d0 - cells(intZeile,A).Value = 117.6 - 18.4 - cells(intZeile,A).Value
weil dieser Wert in der Zelle IMMER kleiner sein wird als "r = 117.6".
Die könntest du dir also eigentlich sparen
2. Schalte die Berechnung auf während des Makros auf Manuell und aktiviere die Bildschirmaktualisiserung
With Application
.Calculation = xlManual
.ScreenUpdating = False
Dein Code
.Calculation = xlAutomatic
.ScreenUpdating = True
End with
3. ".-..einer Schleife für mehrere 100.000 Zeilen in 20 Spalten Berechnungen ..:"
Das sind dann im Minimum mehr als 20 Millionen Berechnungen,... was erwartest du denn ? :-)
Gruss Rainer
Anzeige
AW: Schleife zu langsam
01.12.2009 14:18:13
Cimmer
Hallo Rainer, Ansgar und Daniel,
vielen Dank für die hilfreichen Tips. Wieder was dazugelernt.
Rainer: Die Prüfung ergibt dann Sinn, wenn "Cells(intZeile, A).Value" negativ wird oder sollte es hier eine Besonderheit in VBA geben, die ich übersehen habe?
Gruß
Leon
AW: Schleife zu langsam
30.11.2009 13:52:26
Albrecht
Servus Leon,
das Einschalten der Bildschirm-Aktualisierung solltest Du außerhalb der Schleife platzieren, wenn Du es wieder aktivieren möchtest (im Moment nur Kommentar).
Außerdem sollte das Neuberechnen abgeschaltet werden, so lange in den Schleifen Zelleinträge vorgenommen werden und neue Einträge keinen Einfluss auf die laufenden Schleifen haben:
Application.Calculation = xlCalculationManual
Außerhalb der Schleife und vor End Sub das Neuberechnen wieder auf automatisch stellen:
Application.Calculation = xlCalculationAutomatic
Gruß
Ansgar
Anzeige
AW: Schleife zu langsam Formeln sind schneller
30.11.2009 19:28:31
Daniel
Hi
in den meisten Fällen ist es günstiger, derartige Berechnungen nicht in VBA über Schleifen, sondern direkt in Excel über Formeln rechnen zu lassen.
Das Makro hat dann nur noch die Funktion, die Formeln in den Zellbereich zu schreiben und ggf. die Formeln durch Werte zu ersetzen.
desweiteren solltest du beachten, daß:
Dim intZeile, intZeileQ As Integer 

nur die die Variable intZeileQ als Integer deklariert, die Variable intZeile hingegen als Variant!
Die Dimensionierung muss für jede Variable erfolgen:
Dim intZeile as Long, intZeileQ As Long 

(Integer ist für Zeilenwerte ungeignet, da der Zahlenraum bei Integer zu klein ist.)
Außerdem solltest du dir angewöhnen IMMER mit OPTION EXPLICIT zu arbeiten, ein Teil der Variablen ist bei dir nicht deklariert.
Gruß, Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige