Anzeige
Archiv - Navigation
1360to1364
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
Befüllen der Zeilen dauert lange...
09.05.2014 06:31:26
Christian
Hallo Forum,
mit folgendem Code übertrage ich Daten von einer Userform in ein Tabellenblatt.
Das ganze fkt. zwar, dauert aber ca. 2 Minuten.
Wie kann man das optimieren?
Danke im Voraus!

Option Explicit
Private Sub cmdspeichernpos_Click()
Dim lz As Long
Dim arrNumbers, varNumber, lngNumber As Long
With Sheets("Positionen")
lz = .Range("B:B").Find("*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, SearchFormat:=False).Row + 1
If lz  2 Then
arrNumbers = .Range(.Cells(1, 1), .Cells(lz - 1, 1))
For Each varNumber In arrNumbers
If lngNumber 

MfG Christian

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

Betreff
Datum
Anwender
Anzeige
AW: Befüllen der Zeilen dauert lange...
09.05.2014 06:56:49
MCO
Guten Morgen!
Nach jeder Eingabe rechnet Excel das komplette Blatt durch, was unter Umständen sehr lang dauern kann. Schreibe an die Stelle hinter Application.ScreenUpdating zusätzlich Application.calculation = xlmanual, vergiss dann nicht mit Application.calculation = xlautomatic die Berechnung wieder einzuschalten!
Gruß, MCO

AW: Befüllen der Zeilen dauert lange...
09.05.2014 07:19:34
Christian
Hallo MCO,
leider kein messbarer Zeitgewinn ;-) .. :-(
Da es sich um eine relativ große Arbeitsmappe handelt, ist die Berechnung auch vorher schon auf manuell eingestellt!
Hat es evtl. mit anderen Sachen zu tun, die evtl. im Hintergrund laufen? Es sind einige bedingte Formatierungen in anderen Arbeitsblättern, muss man da noch etwas beachten?
MfG Christian

Anzeige
AW: Befüllen der Zeilen dauert lange...
09.05.2014 07:58:33
Daniel
Ohne deine Datei und die bedingte Formatierung zu kennen, kann man natürlich nur schwer hilfreiche Tops geben.
Einer wäre:
vermeide die Funktionen
Indirekt
Bereich.verschieben
Zufallszahl
Zufallsbereich
Heute
Jetzt
Gruß Daniel

Befüllen mit Array
09.05.2014 07:26:55
Erich
Hi Christian,
bei deinem Code wird 93 mal im Tabellenblatt geändert. Das kostet...
Schneller ist, die neuen Daten in einem Array zu versammeln, dann das Array in einem Rutsch ins Batt zu schreiben.
Im Prinzip so:

Private Sub cmdspeichernpos_Click()
Dim lz As Long, arrNumbers, varNumber, lngNumber As Long
Dim arrZ(1 To 93)
With Sheets("Positionen")
lz = .Range("B:B").Find("*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, SearchFormat:=False).Row + 1
If lz  2 Then
arrNumbers = .Range(.Cells(1, 1), .Cells(lz - 1, 1))
For Each varNumber In arrNumbers
If lngNumber 
...ScreenUpdating halte ich für ziemlich überflüssig.
Ob ...EnableEvents = False gebraucht wird, kannst du ja mal ausprobieren.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Befüllen mit Array
09.05.2014 11:53:27
Christian
Hallo Erich,
vielen Dank, das ist erheblich schneller!
MfG Christian

124 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige