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

1312 Werte übertragen dauert zu lange :-(

1312 Werte übertragen dauert zu lange :-(
23.10.2018 13:39:59
Flo
Moin zusammen,
bei der Auftragsanlage sollen die Daten mit Hilfe meiner zusammengebastelten Formel (s. unten) in einer Auftragsübersicht abgelegt werden. Die Übertragung der bis zu 1312 Daten pro Auftrag dauert fast 1 Minute.
Ist das normal, oder kann man es irgendwie beschleunigen, weil meine Formel nicht optimal ist?
Private Sub Button_Auftrag_Speichern_Click()
'Anzahl an bereits angelegten Aufträgen feststellen und nächste Zeile auswählen
Dim add As Integer
add = Sheets("Verweise").Range("A2").Value
Sheets("Aufträge").Cells(add, 1).Value = Sheets("Auftragsanlage").Range("G2")
For P = 1 To 100 '(100 Positionen pro Auftrag)
'Referenz
Sheets("Aufträge").Cells(add, P * 13 + 0).Value = Sheets("Auftragsanlage").Cells(12 + P, "C")
'Menge
Sheets("Aufträge").Cells(add, P * 13 + 1).Value = Sheets("Auftragsanlage").Cells(12 + P, "H")
'Material
Sheets("Aufträge").Cells(add, P * 13 + 2).Value = Sheets("Auftragsanlage").Cells(12 + P, "J")
'Konfektionierung
Sheets("Aufträge").Cells(add, P * 13 + 3).Value = Sheets("Auftragsanlage").Cells(12 + P, "M")
'Körper
'Länge
Sheets("Aufträge").Cells(add, P * 13 + 4).Value = Sheets("Auftragsanlage").Cells(12 + P, "Q")
'Breite
Sheets("Aufträge").Cells(add, P * 13 + 5).Value = Sheets("Auftragsanlage").Cells(12 + P, "R")
'Höhe
Sheets("Aufträge").Cells(add, P * 13 + 6).Value = Sheets("Auftragsanlage").Cells(12 + P, "S")
'Fläche
'Länge
Sheets("Aufträge").Cells(add, P * 13 + 7).Value = Sheets("Auftragsanlage").Cells(12 + P, "T")
'Breite
Sheets("Aufträge").Cells(add, P * 13 + 8).Value = Sheets("Auftragsanlage").Cells(12 + P, "U")
'QM
Sheets("Aufträge").Cells(add, P * 13 + 9).Value = Sheets("Auftragsanlage").Cells(12 + P, "V")
'Preis
Sheets("Aufträge").Cells(add, P * 13 + 10).Value = Sheets("Auftragsanlage").Cells(12 + P, "Y")
'Summe
Sheets("Aufträge").Cells(add, P * 13 + 11).Value = Sheets("Auftragsanlage").Cells(12 + P, "AB")
'Mitarbeiter
Sheets("Aufträge").Cells(add, P * 13 + 12).Value = Sheets("Auftragsanlage").Cells(12 + P, "AE")
Next P
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: 1312 Werte übertragen dauert zu lange :-(
23.10.2018 14:32:14
Daniel
Hi
naja, jede Zellwertänderung löst in Excel eine Vielzahl von Aktivitäten aus, die dann auch zeit brauchen.
Daher sollte man vermeiden, Zellen einzeln zu ändern, sondern wann immer möglich, die Zelländerungen in einem Schritt durchzuführen. Excel kann dann die anstehenden Aufgaben für alle Zellen gemeinsam durchführen und muss sie nicht für jede Zelle wiederholen.
Eine Möglichkeit wäre beispielsweise, dass man die Werte in einem Array sammelt und dann das Array als ganzes in die Zellen schreibt.
Wäre in deinem Fall:
Dim Erg(1299)
For P = 1 To 100 '(100 Positionen pro Auftrag)
erg((P - 1) * 13 + 0) = Sheets("Auftragsanlage").Cells(12 + P, "C")
erg((P - 1) * 13 + 12) = Sheets("Auftragsanlage").Cells(12 + P, "AE")
next
Sheets("Aufträge").Cells(add, 13).Resize(1, 1300).value = Erg
sollte das Bündeln der Zellwertänderungen zu ein paar wenigen Schritten nicht möglich sein, kann man immer noch die Anzahl der Aufgaben, die Excel bei einer Wertänderung durchführen muss reduzieren, in dem man automatische Neuberechnung, Events und Bildschirmaktuialisierung vorher aus- und hinterher wieder einschalten.
dh an den Anfang des Codes:
Application.EnableEvents = false
Application.ScreenUpdating = false
Application.Calculation = xlcalculationmanual
hier der Code
Application.EnableEvents = true
Application.ScreenUpdating = true
Application.Calculation = xlcalculatioautomatic
Gruß Daniel
Anzeige
AW: 1312 Werte übertragen dauert zu lange :-(
23.10.2018 14:40:37
Flo
Hallo Daniel,
danke für deine Antwort! Das mit den Array habe ich zwar noch nicht so richtig verstanden, aber ich fummel mich da mal ein.
Der Hinweis mit dem Deaktivieren der Bildschirmanzeigen etc. bringt bestimmt etwas an Zeit!
Besten Dank.
Mal sehen wie beschleunigt ich das jetzt hinbekomme...
Gruß, Flo
AW: 1312 Werte übertragen dauert zu lange :-(
23.10.2018 14:50:30
Flo
Hallo Daniel,
danke für deine Antwort! Das mit den Array habe ich zwar noch nicht so richtig verstanden, aber ich fummel mich da mal ein.
Der Hinweis mit dem Deaktivieren der Bildschirmaktualisierung etc. lässt die Formel in Blitzschnelle ausführen!!! :) :) :)
Sehr cool, vielen lieben Dank!!!
Gruß, Flo
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige