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

Makro sprengt Speicher - Wie umschreiben?

Makro sprengt Speicher - Wie umschreiben?
17.02.2016 10:46:53
Matthias
Hallo,
ich möchte unter Excel 2010 Daten sortieren, wobei die Datei im Ausgangszustand 9 Spalten und 64064 Zeilen besitzt. Im Endzustand müßten sich 513 Spalten und 1000 Zeilen ergeben. Bei meinem hierfür geschriebenen Makro erhalte ich die Fehlermeldung "Microsoft Excel kann diesen Vorgang mit den verfügbaren Ressourcen nicht ausführen. Bitte wählen Sie weniger Daten aus oder schliessen Sie andere Programme."
Im alten Office-Forum http://www.office-loesung.de/ftopic515244_15_0_asc.php
gab es zwei Lösungen, daß Makro anders, nämlich ohne for-Schleife aufzubauen.
Leider reichen meine VBA-Kenntnisse bei weitem nicht aus, diese Lösungen zu verstehen....
Wie muß ich mein Makro abändern, damit es funktioniert ?
Application.ScreenUpdating = False
Dim letzte_Spalte As Variant
Dim i As Integer
Dim zeile As Integer
For zeile = 1 To 1000
For i = 1 To 63
Range(Cells(zeile + 1, 2), Cells(zeile + 1, 9)).Select
Selection.Cut
letzte_Spalte = Cells(zeile, Columns.Count).End(xlToLeft).Column
Range(Cells(zeile, letzte_Spalte + 1), Cells(zeile, letzte_Spalte + 1)).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Rows(zeile + 1 & ":" & zeile + 1).Select
Selection.Delete Shift:=xlUp
Next i
Next zeile
Application.ScreenUpdating = True

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

Betreff
Datum
Anwender
Anzeige
AW: Makro sprengt Speicher - Wie umschreiben?
17.02.2016 12:22:37
Daniel
Hi
probier mal, die Daten nicht auf dem selben Tabellenbatt einzufügen, sondern auf einem neuen.
das Problem dürfte sein, dass Excel den Speicher für den genutzten Bereich RECHTECKIG reserviert.
deine Quelldaten haben 64.000 Zielen bei 9 Spalten
deine Zieldaten haben 1000 Zeilen bei 576 Spalten
ordnest du beides auf dem gleichen Blatt an, müsste Excel den Speicherplatz für 64.000 Zeilen und 576 Spalten reservieren und damit das 64-fache der Ausgangsdaten.
wenn du mit 2 Tabellenblättern arbeitest, solltest du nicht mehr mit Select und Selection arbeiten, sondern vollständig referenzieren
Gruß Daniel

Anzeige
AW: Makro sprengt Speicher - Wie umschreiben?
17.02.2016 13:03:10
Matthias
Danke für Deine Antwort.
Aber was bedeutet in dem Zusammenhang "sondern vollständig referenzieren" ?

AW: Makro sprengt Speicher - Wie umschreiben?
17.02.2016 13:17:11
Daniel
Hi
nicht
Sheets("Tabelle1").select
Range(Cells(1, 1), Cells(10, 10)).Select
Selection.Copy

sondern
Range(Sheets("Tabelle1").Cells(1, 1), Sheets("Tabelle1").Cells(10, 10)).Copy
Gruß Daniel

Anzeige
AW: Makro sprengt Speicher - Wie umschreiben?
17.02.2016 14:44:34
Matthias
Tja, ich werde wohl den Vorschlag mit dem zweiten Tabellenblatt ausprobieren müssen.
Ein einfaches Umschreiben mit Referenzen zeigt jedenfalls weiterhin den gleichen Fehler.
 For zeile = 1 To 1000
For i = 1 To 63
Range(Cells(zeile + 1, 2), Cells(zeile + 1, 9)).Cut
letzte_Spalte = Cells(zeile, Columns.Count).End(xlToLeft).Column
Range(Cells(zeile, letzte_Spalte + 1), Cells(zeile, letzte_Spalte + 1)).Insert Shift:= _
xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Rows(zeile + 1 & ":" & zeile + 1).Delete Shift:=xlUp
Next i
Next zeile

Anzeige
AW: Makro sprengt Speicher - Wie umschreiben?
17.02.2016 14:57:35
Daniel
In deinem Codebeispiel arbeitst du ja auch noch nicht mit zwei Tabellenblättern, sondern immer noch auf dem selben.
du musst die Daten auf einem Blatt kopieren und auf einem anderen einfügen.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige