Discussion:
Raaaah! Der Stapelspeicher ist voll!
(zu alt für eine Antwort)
Hans Alborg
2015-05-28 17:23:23 UTC
Permalink
Hallo.

Nach einem Ausflug zu Excel 2013 mit anschließender Deinstallation wieder
mit meinem 2007'er Excel und VBA:

Meine Simulationsmappe hab ich jetzt mit etlichen Modulen/ Komponenten
erweitert, so daß ich "leicht" größere Simus duchführen >könnte<.

Irgendwann kommt jedoch diese Meldung wegen des vollen Stapelspeichers.
Im Netz las ich, daß das Worksheet_SelectionChange Ereignis wohl bei mir der
Übeltäter ist. Ich setze "einige" Klicks auf bestimmte Zellen um die
Simulation schrittweise weiterzuführen, je Tabellenspalte querrüber ein
Klick, dann in der nächsten Zeile wieder zurück, wieder umgekehrt usw., und
der Automatikmodus der Simulation selektiert auch nur diese bestimmten
Zellen (eine Tabellenspalte besteht immer aus 18 Columns, die Zeilen sind
12, 34, 41 usw., zur Info).

Was kann ich tun?
Falls die Simu mal komplett ist, wird das evtl. noch zehnmal mehr!

Ich brauch die Klicks nicht aufgehoben in irgendeinem Speicher, aber kann's
wohl nicht ändern. Soll ich andere Sachen bearbeiten, z.B. wie die Variablen
von Schleifen nach Durchlauf auf 0 setzen? Ein paar davon laufen zur
Simulation mit, aber nicht soo viele. Das heißt "kleine Kosmetik" wird nicht
lange helfen.

Da ich schon Hex- Werte mit VBA in externe Dateien geschrieben habe und so
Sachen: gibt es die Möglichkeit den Stapelspeicher zurückzusetzen?

Hans
Claus Busch
2015-05-28 17:31:51 UTC
Permalink
Hallo Hans,
Post by Hans Alborg
Irgendwann kommt jedoch diese Meldung wegen des vollen Stapelspeichers.
Im Netz las ich, daß das Worksheet_SelectionChange Ereignis wohl bei mir der
Übeltäter ist. Ich setze "einige" Klicks auf bestimmte Zellen um die
Simulation schrittweise weiterzuführen, je Tabellenspalte querrüber ein
Klick, dann in der nächsten Zeile wieder zurück, wieder umgekehrt usw., und
der Automatikmodus der Simulation selektiert auch nur diese bestimmten
Zellen (eine Tabellenspalte besteht immer aus 18 Columns, die Zeilen sind
12, 34, 41 usw., zur Info).
werden bei den Klicks sehr viele Prozeduren aufgerufen? Kommst du dabei
vielleicht sogar in eine Endlosschleife? Hast du sehr viele Variablen
als Public deklariert, so dass sie im Speicher gehalten werden?
Kannst du die Events bei Selection_Change abschalten?


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Hans Alborg
2015-05-30 20:09:02 UTC
Permalink
Hi Claus,

"Claus Busch" schrieb...
Post by Claus Busch
werden bei den Klicks sehr viele Prozeduren aufgerufen?
Ja da ist Einiges, aber was ist "viel"?
Post by Claus Busch
vielleicht sogar in eine Endlosschleife?
Glaub nicht. Das würde den Code anhalten und ließe sich mit ESC wohl
unterbrechen.
Post by Claus Busch
Hast du sehr viele Variablen als Public deklariert, so dass sie im
Speicher gehalten werden?
Au ja. Ich hatte schon sehr lange vor, bestimmte Varablen einfach im
Hilfsblatt abzulegen, damit ich in jeder Phase der Simu abspeichern kann und
an diesem Punkt wieder weitermachen kann. Das werd ich mal auf die Publics
ausweiten.

Würde es was bringen, Zählvariablen gleich nach dem NEXT auf 0 zu setzen?
Post by Claus Busch
Kannst du die Events bei Selection_Change abschalten?
Das hab ich schon getestet. Dann reagiert das Change ja nicht mehr auf
Klicks!
An einer "harmlosen" Stelle erst Events aus, ein paar Zeilen weiter wieder
ein bringt jedenfalls keinen leeren Stapelspeicher!

Vielleicht hilft das mit den Public- Variablen erstmal, aber bei noch
größerem Umfang der Simulation sehe ich das Problem wieder auftauchen.

Kann man den Inhalt des Stapelspeichers auslesen?

Hans
Claus Busch
2015-05-30 20:36:26 UTC
Permalink
Hallo Hans,
Post by Hans Alborg
Au ja. Ich hatte schon sehr lange vor, bestimmte Varablen einfach im
Hilfsblatt abzulegen, damit ich in jeder Phase der Simu abspeichern kann und
an diesem Punkt wieder weitermachen kann. Das werd ich mal auf die Publics
ausweiten.
schau mal hier rein, ob dir das weiterhilft:
https://msdn.microsoft.com/de-de/library/0ctsw64a.aspx
http://www.vbarchiv.net/tipps/details.php?id=1294


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Hans Alborg
2015-05-31 10:32:23 UTC
Permalink
Hallo Claus,

"Claus Busch" schrieb...

Hallo Hans,
Post by Claus Busch
https://msdn.microsoft.com/de-de/library/0ctsw64a.aspx
nö, hatte ich bei meiner Suche schon gesehen.
Post by Claus Busch
http://www.vbarchiv.net/tipps/details.php?id=1294
Das ist zwar interessant, aber für VB6. Die "VBLINK.EXE" finde ich im
Office- Ordner nicht und müßte die Ersatz- EXE dann wohl auch mit VB6 bauen.
Hab kein VB6.

Aber (Zitat):
"Da VB-Programme standardmäßig mit einem genügend großen Stapel (1 Megabyte)
ausgestattet werden..."

Falls das für VBA auch gilt, sollte das doch eigentlich reichen.

Ich werd also erstmal optimieren und dann sehn wir mal...

Hans

Lesen Sie weiter auf narkive:
Loading...