Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen löschen - nicht genügend Arbeitsspeicher

Zeilen löschen - nicht genügend Arbeitsspeicher
08.03.2018 08:35:00
Florian
Hallo liebe Excelfreunde,
habe folgendes Problem: Beim ausführen des unten stehenden Makros endet dieses in folgendem Fehler:
Nicht genügend Arbeitsspeicher für diese Aktion. Wählen Sie weniger Daten aus,
oder schließen Sie andere Anwendungen. Erwägen Sie zum Erhöhen des verfügbaren Arbeitsspeichers die Verwendung einer 64-Bit-Version von Microsoft Excel.

Es sind keine anderen Programme geöffnet. Die 64-bit Version führt bei Outlook immer wieder zu hässlichen Komplikationen.
Hier das auszuführende Makro:
Sub Zeilen_loeschen()
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten
Range("AA13:AA2012").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
Range("AC11:AG2012").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
Range("AC11:AG2012").Replace 0, "", xlWhole
Range("AJ11:QNZ11").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
Range("AJ11:QNZ11").Replace 0, "", xlWhole
Columns("A:A").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
ActiveWorkbook.Save
Columns("A:A").Replace 0, "", xlWhole
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic 'automat.Berechnung einschalten
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub
Im der fett gedruckten Zeile beliebt das Makro hängen. Es sind sehr viele Spalten (11890) und Zeilen (30012), welche ich mit diesem Makro löschen will.
Besten Dank für eure Hilfe.
Florian
Anzeige

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

Betreff
Datum
Anwender
Anzeige
ohne select
08.03.2018 08:42:20
Hajo_Zi
Hallo Florian,
Select, Activate usw. ist in VBA zu 99,8% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
Hinweise zu select usw. Hajo-Excel.de
Hinweise zu select usw. Online-Excel.de
Hinweise zu select usw. Online-Excel.de
Der Cursor ist kein Hund, der überall rum geführt werden muss.
Option Explicit
Sub Zeilen_loeschen()
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten
With Range("AA13:AA2012")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
End With
With Range("AC11:AG2012")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
End With
Range("AC11:AG2012").Replace 0, "", xlWhole
With Range("AJ11:QNZ11")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
End With
Range("AJ11:QNZ11").Replace 0, "", xlWhole
With Columns("A:A")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
End With
ActiveWorkbook.Save
Columns("A:A").Replace 0, "", xlWhole
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.Calculation = xlCalculationAutomatic 'automat.Berechnung einschalten
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: ohne select
08.03.2018 10:00:21
Florian
Hallo Hajo,
besten Dank für deine Mühe un deinen Hinweis. Mir ist bewusst, dass mein/meine Makros alles andere als elegant gelöst sind. Ich muss mich mal hinsetzen und diese mal so wie von dir soeben vorgeschlagen ausmisten und reinschreiben. Nichts desto Trotz hängt sich auch mit umgeschriebenem Code Excel bei folgendem Befehl auf:
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Kann ich hierfür einen anderen Befehl nehmen, welcher weniger Arbeitsspeicher frisst?
Danke im Voraus!
Florian
Anzeige
AW: ohne select
08.03.2018 10:06:50
Hajo_Zi
Hallo Florian,
das ist eine Zeile aus Deinem Code und da Stand nicht, das dies nicht läuft.
Ich habe keinen anderen Ansatz.
Vielleicht gibt es keine Leerzellen?
Gruß Hajo
AW: ohne select
08.03.2018 10:44:04
Daniel
Hi
sortiere mal das ganze nach Spalte A, so dass die zu löschenden Zeilen einen lückenlosen Zellblock bilden.
der Arbeitsaufwand, der beim Löschen der Zeilen entsteht, richtet sich nicht nach der Anzahl der Zeilen, sondern nach der Anzahl der ungeteilten Zellblöcke.
Löschst du beispielsweise die Zeilen 1, 3, und 5, ist der Aufwand dreimal so groß, wie wenn du die Zeilen 1-3 löschst.
ansonsten Checke mal die Spaltenangabe QNZ, ob die wirklich so notwendig ist.
das sind über 11.000 Spalten, das macht den Zellbereich den Excel hier verwalten muss, schon sehr groß.
Gruß Daniel
Anzeige
AW: ohne select
08.03.2018 10:50:18
Zwenn
Hallo Florian,
wenn Windows bei so einem billigen Befehl zu weng Arbeitsspeicher meldet, dann kann ich mir kaum vorstellen, dass es am Makro liegt. Schau mal in den Taskmanager, welche Prozesse den Arbeitsspeicher fressen. Zusätzlich wäre eine Info über Deine Arbeitsumgebung hilfreich: Wie groß ist der Arbeitsspeicher in deinem Computer überhaupt, wie wird der virtuelle Arbeitsspeicher verwaltet bzw. wie groß ist er eingestellt, welches Windows verwendest du und mal grob, wie alt ist die ganze Kiste und was wird da schon alles beim booten mitgestartet?
Wie groß ist denn die Excel-Datei, die Du geöffnet hast? Wenn die riesige Datenmengen enthält, nimmt das schon viel vom Arbeitsspeicher ein. Wie verhält sich das System, wenn du versuchst nach dieser Fehermeldung z.B. den Browser zu starten und im I-Net eine Seite aufzurufen?
Excel 32 Bit kann natürlich nur bis zu 4 GB RAM ansprechen. Kann also sein, dass alles andere trotzdem noch gut funktioniert, wenn Du mehr RAM verbaut hast.
Viele Grüße,
Zwenn
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen löschen in Excel: Probleme mit Arbeitsspeicher lösen


Schritt-für-Schritt-Anleitung

Um Zeilen in Excel zu löschen, ohne auf das Problem des nicht genügend Arbeitsspeichers zu stoßen, kannst Du folgende Schritte befolgen:

  1. Makro optimieren: Verwende die With-Anweisung, um die Bildschirmaktualisierung und Berechnung zu steuern.

    Beispiel:

    Sub Zeilen_loeschen()
       Application.ScreenUpdating = False
       Application.Calculation = xlCalculationManual
       ' Hier die relevanten Zeilen deines Codes
       Application.Calculation = xlCalculationAutomatic
       Application.ScreenUpdating = True
    End Sub
  2. Leere Zeilen gezielt löschen: Nutze die SpecialCells-Methode, um nur leere Zeilen zu löschen:

    Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  3. Daten sortieren: Sortiere Deine Daten nach der Spalte, die Du löschen möchtest, um sicherzustellen, dass die zu löschenden Zeilen zusammenhängend sind.

  4. Speicher optimieren: Schließe andere Anwendungen, um den Excel-Arbeitsspeicher zu erhöhen. Prüfe auch, ob Du die 64-Bit-Version von Microsoft Excel verwenden kannst, um mehr RAM zu nutzen.


Häufige Fehler und Lösungen

  • Fehler: "Nicht genügend Arbeitsspeicher verfügbar für diese Aktion."

    • Lösung: Überprüfe den Task-Manager, um herauszufinden, welche Programme viel Arbeitsspeicher beanspruchen. Schließe unnötige Programme.
  • Fehler: "Excel kann Zeile nicht löschen."

    • Lösung: Stelle sicher, dass die zu löschenden Zeilen tatsächlich leer sind. Du kannst auch nach leeren Zellen suchen und diese manuell überprüfen.
  • Problem: Leere Zeilen am Ende lassen sich nicht löschen.

    • Lösung: Verwende eine alternative Methode, um alle leeren Zeilen zu identifizieren und zu entfernen.

Alternative Methoden

  1. Manuelles Löschen: Wenn das automatische Löschen nicht funktioniert, kannst Du die Zeilen manuell auswählen und löschen.
  2. Datenfilter verwenden: Setze einen Filter auf Deine Daten, um nur die Zeilen anzuzeigen, die Du löschen möchtest.
  3. Excel-Arbeitsspeicher leeren: Speichere Deine Datei unter einem neuen Namen, um temporäre Daten zu löschen.

Praktische Beispiele

  • Beispiel 1: Um leere Zeilen in einem großen Datenbereich zu löschen, verwende folgendes Makro:

    Sub LeereZeilenLoeschen()
       Dim rng As Range
       Set rng = Columns("A:A").SpecialCells(xlCellTypeBlanks)
       rng.EntireRow.Delete
    End Sub
  • Beispiel 2: Wenn Du eine große Anzahl an Spalten hast und die Spalte "QNZ" nicht benötigst, kannst Du diese ganz einfach löschen:

    Columns("QNZ:QNZ").Delete

Tipps für Profis

  • Excel-Arbeitsspeicher erhöhen: Wenn Du regelmäßig mit großen Datenmengen arbeitest, ist es ratsam, auf die 64-Bit-Version von Excel umzusteigen, um mehr Arbeitsspeicher nutzen zu können.
  • Vermeide das Select-Kommando: Optimiere Deinen Code, indem Du Select und Activate vermeidest, um die Leistung zu steigern.
  • Regelmäßige Sicherung: Speichere Deine Arbeit regelmäßig, um Datenverluste bei Speicherproblemen zu vermeiden.

FAQ: Häufige Fragen

1. Warum kann ich leere Zeilen nicht löschen? Es kann sein, dass die Excel-Datei zu viele unverbundene Zellblöcke enthält. Versuche, die Daten zu sortieren und dann die Zeilen zu löschen.

2. Was tun, wenn der Arbeitsspeicher voll ist? Schließe andere Anwendungen oder speichere Excel-Dateien unter einem neuen Namen, um den Arbeitsspeicher zu leeren. Außerdem kann es helfen, mehr RAM in deinen Computer einzubauen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige