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

"VBA-Arbeitsspeicher" leeren?

Forumthread: "VBA-Arbeitsspeicher" leeren?

"VBA-Arbeitsspeicher" leeren?
29.01.2016 13:51:51
otto
Hallo zusammen,
wir haben eine Arbeitsmappe mit ca. 25 MB, 57 Userforms und 24.171 Zeilen VBA-Code.
Ich weiß, Datenbank wäre hier der bessere Weg.
Nach ca. 5 h Arbeit ist der "VBA-Speicher" voll und ein Weiterarbeiten nur nach Schließen und neu öffnen möglich. Gespeichert werden kann hier auch nicht mehr.
Gibt es eine Möglichkeit den Speicher während der Laufzeit zu löschen, ohne Excel schließen zu müssen?
Alle Variablen mit Set werden wenn nicht mehr benötigt auf Nothing gesetzt.
Hat jemand eine Idee?
Danke schon mal.
otto

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: "VBA-Arbeitsspeicher" leeren?
29.01.2016 14:03:16
Daniel
Hi
prüfe mal, ob ein Klick auf den Button "Zurücksezten" in der Symbolleiste "Debuggen" hilft.
das löscht auch alle statischen und projektweit gültigen Variablen.
das Ausführen des VBA-Befehls END in einem Makro sollte einen ähnlichen Effekt haben.
die Makros und Userforms müssen dann aber wie nach einem Öffnen der Datei neu gestartet werden.
Gruß Daniel

Anzeige
AW: "VBA-Arbeitsspeicher" leeren?
29.01.2016 14:36:25
otto
Hi,
zurücksetzen bringt nix, das mit dem END habe ich noch nicht probiert, müsste ich ja in alle Makros schreiben. (57 Module = ~ 100 Makros)
otto

AW: "VBA-Arbeitsspeicher" leeren?
29.01.2016 14:49:30
Daniel
naja, das mit dem End müsstest du nur dann ausführen, wenn der Speicher droht vollzulaufen.
aber wenn das Zurücksetzen nicht hilft, wird auch das END nichts bringen, weil das im Prinzip ähnliches bewirkt.
da müsst ihr dann wohl euer Programm überarbeiten.
Gruß Daniel

Anzeige
AW: "VBA-Arbeitsspeicher" leeren?
29.01.2016 16:38:14
Sigi
Hallo,
wie sieht es mit der Zwischenablage aus?
Ist diese vielleicht voll?
Gruß
Sigi

AW: "VBA-Arbeitsspeicher" leeren?
01.02.2016 06:51:57
otto
Moin,
nein nicht voll, aber sind paar Grafiken drin, die während der Makros gespeichert wurden und als Bild in eine UF eingefügt werden.
Dies könnte ich noch abstellen indem ich anstelle der Grafik mehrere Labels einzeln fülle.
otto
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA-Arbeitsspeicher leeren und optimieren


Schritt-für-Schritt-Anleitung

  1. Überprüfen der Variablen: Stelle sicher, dass alle nicht mehr benötigten Variablen auf Nothing gesetzt werden. Dies hilft, den Arbeitsspeicher zu bereinigen.

    Set meineVariable = Nothing
  2. Verwendung des "Zurücksetzen"-Buttons: Nutze den "Zurücksetzen"-Button in der Symbolleiste "Debuggen". Dies entfernt alle statischen und projektweit gültigen Variablen und kann helfen, den Arbeitsspeicher zu leeren.

  3. Ausführen des END-Befehls: Füge den Befehl END in deinen Makros ein, um den Speicher zu leeren, wenn du bemerkst, dass der Arbeitsspeicher voll ist. Dies erfordert jedoch ein Neustarten der Makros und Userforms.

    End
  4. Überwachung der Zwischenablage: Achte darauf, dass die Zwischenablage nicht übermäßig befüllt ist, da dies den Arbeitsspeicher ebenfalls belasten kann.


Häufige Fehler und Lösungen

  • Arbeitsspeicher voll: Wenn du die Meldung "Arbeitsspeicher voll" erhältst, überprüfe, ob du alle Variablen korrekt freigegeben hast. Achte auch darauf, dass deine Userforms nicht unnötig viele Grafiken laden.

  • Das Zurücksetzen funktioniert nicht: Wenn das Zurücksetzen nicht hilft, könnte es sein, dass die Anwendung überarbeitet werden muss. Versuche, die Anzahl der Userforms und Makros zu reduzieren.


Alternative Methoden

  • Verwenden von Arrays: Statt viele Variablen zu setzen, nutze Arrays, um Daten zu speichern. Dies kann helfen, den Arbeitsspeicher effizienter zu nutzen.

  • Makros optimieren: Überarbeite deine Makros, um weniger Ressourcen zu verbrauchen. Weniger Schleifen und schnellere Algorithmen helfen, den Arbeitsspeicher freizuhalten.


Praktische Beispiele

Hier ein einfaches Beispiel, um den Arbeitsspeicher bei der Verwendung von Userforms zu optimieren:

Private Sub UserForm_Initialize()
    ' Setze alle nicht benötigten Variablen auf Nothing
    Set meineVariable = Nothing
    ' Reduziere die Grafiken
    Me.Label1.Caption = "Neuer Wert"
End Sub

In diesem Beispiel wird der Arbeitsspeicher freigeben, indem alle Variablen, die nicht mehr benötigt werden, gelöscht werden.


Tipps für Profis

  • Regelmäßiges Speichern: Speichere deine Arbeit regelmäßig, um sicherzustellen, dass der Arbeitsspeicher nicht überläuft.

  • Debugging-Tools nutzen: Verwende die Debugging-Tools von Excel, um den Status des Arbeitsspeichers zu überwachen und Probleme frühzeitig zu erkennen.

  • Profiling der Makros: Analysiere die Performance deiner Makros, um herauszufinden, wo der meisten Arbeitsspeicher verwendet wird.


FAQ: Häufige Fragen

1. Wie kann ich den Arbeitsspeicher leeren?
Du kannst den Arbeitsspeicher leeren, indem du alle nicht mehr benötigten Variablen auf Nothing setzt und den END-Befehl in deinen Makros verwendest.

2. Was tun, wenn der Arbeitsspeicher voll ist?
Überprüfe, ob du alle Variablen freigegeben hast und reduziere die Anzahl der Userforms und Grafiken in deinem Projekt.

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