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

Code per Array beschleunigen?

Code per Array beschleunigen?
15.05.2017 11:41:27
Lars
Hallo zusammen,
ich bin ein ziemlicher VBA-Anfänger und stehe jetzt vor einem Problem. In einer Liste sollen die Werte in einer Zelle in 1er-Schritten erhöht werden (bis +5).
Dann wird geprüft, ob sich darauf beziehende Werte ändern. Das ganze funktioniert auch, allerdings nimmt die Berechnung über die Schleife sehr viel Zeit in Anspruch.
Ist es möglich die Berechnung über ein Array zu beschleunigen?
Vielen Dank vorab
Anbei der Auszug aus dem Code:
b = Cells(Rows.Count, 3).End(xlUp).Row
For i = 6 To b
Cells(i, 37) = Cells(i, 10)
If Cells(i, 22) = "D" Or Cells(i, 39) = 1 Then GoTo weiter1 ' Prüfung auf D Artikel
h = Cells(i, 37).Value
Do Until Cells(i, 39) < Cells(i, 33) Or h > Cells(i, 10) + 4 Or Cells(i, 39) < 2
Cells(i, 37) = Cells(i, 37) + 1
h = h + 1
Loop
If Cells(i, 39) <> Cells(i, 33) Then Cells(i, 40) = "+" Else Cells(i, 37) = Cells(i, 10)
weiter1:
Next

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code per Array beschleunigen?
15.05.2017 12:00:44
Daniel
HI
naja, wird schwierig.
Da anzunehmen ist, dass den Zellen, die du in der Prüfung der DO-Schleife Formeln stehen, welche von Cells(i, 37) abhängig sind, müssen diese ja nach jeder Wertänderung in Cells(i, 37) neu berechnet werden. Daher funktioniert das ganze nicht per Array, außer du nimmst diese Berechnungen ebenfalls im Array vor.
Hier wäre es vielleicht sinnvoll, die Bedingungsprüfung in einer Hilfsspalte als Formel zu erstellen und dann für Zellen in Spalte 37 nacheinander eine Zielwertsuche anzustoßen (Daten - Was wäre wenn-Analyse - Zielwertsuche)
Gruß Daniel
AW: Code per Array beschleunigen?
15.05.2017 12:57:24
Max2
Hallo,
ich stimme Daniel zu.
Hier nur eine kleine Anmerkung.
GoTo solltest du vermeiden.
Du kannst das GoTo vermeiden indem du einfach folgend prüfst:
If Cells(i, 22) "D" Or Cells(i, 39) 1 Then
...Code
End if
Next
Vor deiner Do Schleife, initialisiert du "h" als Cells(i, 37).
Innerhalb der Schleife erhöhst du aber die Zelle UND h, das ist
unnötig.
Einfach nur h erhöhen und nach Loop sagen: Cells(i, 37) = h
Anzeige
AW: Code per Array beschleunigen?
15.05.2017 17:22:35
Lars
Vielen Dank für die Tipps, dann werde Ich dass mit der Hilfsspalte versuchen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige