Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1724to1728
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

Zeilen einfügen, große Datei, Excel und eine Ewigkeit.

Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
24.11.2019 19:29:08
AnBad
Hallo liebe Excel-Gemeinde,
ich teste gerade eine Datei mit rund 5000 Zeilen. Zum Test wollte ich irgendwo bei Zeile 2500 ein paar leere Zeilen einfügen. Und Sie da: Der PC/Excel rackert sich damit ab. Ist das normal?
Alternativ dachte ich mir, ich lasse einfach die restlichen 2500 VBA nach unten kopieren über ein Array (einlesen + schreiben). Das glaube ich ging/geht schneller, oder?
Das hatte ich in einer kleinen Datei bereits getestet. Leider werden mit dem Array keine Formate kopiert.
Also dachte ich mir weiter, ich lasse VBA wirklich die Zeilen copy und paste machen. Damit bin ich jedoch wieder an meinem Ausgangsproblem: Der Excel braucht 5 Minuten.
Das wundert mich alles: Ein Excel mit 1 Mio. Zeilen, aber mit 5000 Zeilen schon überfordert?
Sehe ich das richtig?
Was ist der beste Weg, Zeilen einzufügen? Mache ich was falsch? Array lesen und schreiben, und dann copy und paste der Formate?
Viele Grüße und schönen Sonntagabend.
Michael

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
24.11.2019 20:36:16
Piet
Hallo Michael
mit diesem kleinen Programm kannst du bitte mal testen wo dein "UsedRange" wirklich liegt?
Solltest du zum Spass in der letzten Zeile mal was reingeschrieben haben merkt sich Excel > 1.000.000 Zeilen als belegt! (Auch dann wenn du den Zellen Inhalt gelöscht hast!) Die müssten dann komplett verschoben werden.
mfg Piet
Sub test()
MsgBox ActiveSheet.UsedRange.Rows.Count
MsgBox ActiveSheet.UsedRange.Address(0, 0)
End Sub

AW: Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
25.11.2019 06:49:04
AnBad
Hallo Piet, guten Morgen,
sorry, viel Text....
Habe das getestet. Das ist es nicht. Das Blattende liegt korrekt am Ende der Tabelle. Ich habe zum Test die Tabelle auch markiert und mal in eine neue Exceldatei kopiert. Hier ging das Einfügen einer leeren, neuen Zeile schneller. Hat aber auch noch 3-5 Sekunden gedauert. Auch nicht gut.
Kann es sein, dass durch das manuelle Einfügen einer leeren Zeile ein VBA-Makro wegen "Private Sub Worksheet_Change(ByVal Target As Range)" 1000 mal ausgelöst wird und es in Originaldatei deswegen so lange dauert (5 Minuten)?
Ich habe am Angang des Codes:
Application.EnableEvents = False
Application.ScreenUpdating = False
So dass ich denke, das "Private Sub Worksheet_Change(ByVal Target As Range)" bei Einfügen einer leeren Zeile mittels VBA verhindert wird. Bei manuellen Einfügen könnten VBA-Makros wohl ausgelöst werden?
Beides, also manuelles Einfügen und auch durch VBA dauert zum Erbrechen lange...
Ziel der ganzen Geschichte ist es: Wenn ein Anwender in der Tabelle mitten drin in einer neuen Zeile Daten eingibt, dann soll ein Makro über dieser Zeile und unterhalb dieser neuen Zeile dafür Sorgen, dass mindestens 3 neue, leere Zeilen vor der Eingabezeile und 3 Zeilen nach der Eingabezeile eingefügt werden. Wie würdest Du das lösen: Durch VBA einfügen von leeren Zeilen, kopieren der vorhanden Daten nach unten mittels VBA, oder über ein Array (lesen und 3 Zeilen wieder schreiben)?
vg.
Michael
Anzeige
AW: Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
25.11.2019 16:13:12
Piet
Hallo Michael
so aus der Ferne, ohne die Datei vor mir zu haben ist das schwer zu sagen. Mein Verdacht ist jetzt auch dass das Target Makro unendlich oft ausgelçst werden könnte? Das könntest du testen indem du eine leere Zelle als Zaehler benutzt, wo du im Target Makro den Wert immer um Plus 1 erhöhst. Wenn du dann Zeilen löschst sieht du wie oft Target ausgelöst wurde.
Kannst du eine abgespeckte Beispieldatei hochladen wo ich die Makros hier testen kann?
mfg Piet
AW: Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
25.11.2019 18:51:10
AnBad
Hallo Piet,
ich habe den Fehler heute gefunden. Und zwar: Eine Formatierung einer Spalte als Währungswerte Minus=rot, Plus=schwarz.
Ich habe also erstmal alle Formatierung gelöscht, und bin jetzt am Aufbauen einer Minimalformatierung (in jedem Fall ohne Autoformate).
Trotzdem würde mich interressieren, wie Du als Profi Zeilen in Große Tabellenblätter einfügen würdest?
1) .Insert
2) .copy und entsprechen x-Zeilen darunter einfügen
3) in Array Folgezeilen einlesen und x-Zeilen darunter wieder schreiben (Formate gehen verloren?)
Vielen Dank und viele Grüße, schönen Abend!!
Michael
Anzeige
AW: Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
26.11.2019 18:54:26
Piet
Hallo Michael
aus langjaehriger Erfahrung probiere ich bei langen Laufzeiten ALLE Varianten aus, die ich kenne. Vergleiche gerne Laufzeiten miteinander, indem ich mir beim Start und am Ende des Makro die Zeit in zwei Zellen schreibe. Dann sehe ich wie lange das Makro von Start bis Ende gebraucht hat.
mfg Piet
AW: Zeilen einfügen, große Datei, Excel und eine Ewigkeit.
26.11.2019 18:56:41
AnBad
OK,
danke für den Tipp!!
vg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige