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

Laufzeitfehler ungenügend Stapelspeicher

Laufzeitfehler ungenügend Stapelspeicher
23.10.2018 08:53:43
Peter
Hallo ihr Excelspezialisten,
bei Durchführung von einigen Aufgaben in meiner Datei kam die Fehlermeldung: nicht genügend Stapelspeicher.
Nun habe ich im Archiv gesucht und eine evtl. Lösung von UweD gefunden:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Application.EnableEvents = False
If Target.Address = "$B$12" Then Range("C12") = Range("B12") * 1.19
If Target.Address = "$C$12" Then Range("B12") = Range("C12") / 1.19
If Target.Address = "$B$13" Then Range("C13") = Range("B13") * 1.19
If Target.Address = "$C$13" Then Range("B13") = Range("C13") / 1.19
If Target.Address = "$B$15" Then Range("C15") = Range("B15") * 1.19
If Target.Address = "$C$15" Then Range("B15") = Range("C15") / 1.19
If Target.Address = "$B$16" Then Range("C16") = Range("B16") * 1.19
If Target.Address = "$C$16" Then Range("B16") = Range("C16") / 1.19
If Target.Address = "$B$17" Then Range("C17") = Range("B17") * 1.19
If Target.Address = "$C$17" Then Range("B17") = Range("C17") / 1.19
If Target.Address = "$B$18" Then Range("C18") = Range("B18") * 1.19
If Target.Address = "$C$18" Then Range("B18") = Range("C18") / 1.19
If Target.Address = "$B$19" Then Range("C19") = Range("B19") * 1.19
If Target.Address = "$C$19" Then Range("B19") = Range("C19") / 1.19
If Target.Address = "$B$20" Then Range("C20") = Range("B20") * 1.19
If Target.Address = "$C$20" Then Range("B20") = Range("C20") / 1.19
If Target.Address = "$B$21" Then Range("C21") = Range("B21") * 1.19
If Target.Address = "$C$21" Then Range("B21") = Range("C21") / 1.19
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub

On Error GoTo Fehler
Application.EnableEvents = False
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number 0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
Wo muss ich diese überall einbringen, damit kein derartiger Fehler mehr angezeigt wird?
Besten Dank für eure Hilfe.
Gruss
Peter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler ungenügend Stapelspeicher
23.10.2018 09:19:18
EtoPHG
Hallo Peter,
Derartige Fehler (Stapelüberlauf) können bei rekursiven Aufruf von Codes auftreten.
Weil jede Zelländerung durch VBA innerhalb eines Change_Ereignis dieses rekursiv wieder aufruft kann es zu einer Kettenreaktion kommen, die den Speicher bis zur Erschöpfung 'auffrisst'.
Wichtig ist darum die Ereignissteuerung vor der Änderung auszuschalten (Application.EnableEvents = True und nach der Änderung wieder einzuschalten.
Dazwischen wird der Code mit den Zelländerungen ausgeführt.
Zusätzlich ist in Uwes Code eine Fehlerbehandlung, damit die Ereignissteuerung wieder eingeschaltet wird, falls eine Zelländerungs-Codezeile einen Fehler verursachen würde. Die Err.Clear Anweisung ist hier allerdings überflüssig und würde im Fehlerfall nie durchlaufen.
Gruess Hansueli
Anzeige
Das falsche Wichtig, richtiggestellt:
23.10.2018 10:33:08
EtoPHG
Wichtig ist darum die Ereignissteuerung vor der Änderung auszuschalten (Application.EnableEvents = False) und nach der Änderung wieder einzuschalten (Application.EnableEvents = True). Dazwischen steht der Code für die Zelländerungen.
AW: erledigt
23.10.2018 11:15:11
Peter
Hallo Hansueli,
besten Dank für Deine Erklärung und Hilfe.
Gruss
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige