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

VBA: nicht genügend stapelspeicher Fehler 28

VBA: nicht genügend stapelspeicher Fehler 28
05.01.2018 11:36:12
Balduris
Guten Morgen,
ich bin relativ unerfahren was VBA / Markos angeht, weiss mir aber auf Grund der Umstände nicht anders zu helfen. Die Zirkelbezuglösung die ich ursprünglich genutzt hatte, führte zu Fehlbedienungen durch andere Nutzer, daher die VBA Lösung.
Durch meine Unkenntnis hat sich allerdings auf schwächeren Rechnern ein Fehler eingeschlichen, den ich nicht allein behoben bekomme.
Was soll passieren: wenn z.B. in Zelle B15 ein Betrag eingegeben wird, soll in Zelle C15 der Betrag mit 1,19 multipliziert automatisch eingetragen werden (und umgekehrt, einfache brutto / netto Berechnung, bei der der Nutzer die Wahl hat ob er B oder C mit Daten füttert).
Funktioniert so weit auch, allerdings habe ich wohl eine Endlosschleife produziert, die bei einigen Rechnern zu dem angesprochenen Fehler führt.
Der von mir verwendete Code:

Private Sub Worksheet_Change(ByVal Target As Range)
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
End Sub
Kann mir jemand verraten, wie ich die vermutete Endlosschleife loswerde?
Besten Dank im Voraus
VG Balduris

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: nicht genügend stapelspeicher Fehler 28
05.01.2018 11:47:37
UweD
Hallo
da du per Makro wieder eine Zelländerung vornimmst, wird das Event immer wieder aufgerufen.
Also vorher ausschalten. und am Ende wieder ein.
Im Fehlerfall würde das schiefgehen, deshalb noch eine Fehlerbehandlung drumherumbauen.
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

LG UweD
Anzeige
eleganter
05.01.2018 12:02:00
UweD
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Dim Z
    If Target.Row >= 12 And Target.Row <= 21 Then
    
        Application.EnableEvents = False
        For Each Z In Target
            Select Case Z.Column
                Case 2
                    Z.Offset(0, 1) = Z * 1.19
                Case 3
                    Z.Offset(0, -1) = Z / 1.19
                Case Else
                    GoTo Fehler
            End Select
        Next
        
    End If
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: VBA: nicht genügend stapelspeicher Fehler 28
05.01.2018 12:12:43
Balduris
Hallo Uwe,
vielen Dank für deine schnelle Hilfe. Das funktioniert einwandfrei!
Ich sehe schon: Wenn ich VBA in Zukunft nutzen möchte, habe ich noch einen laaangen Weg vor mir :)
Danke und LG zurück
Balduris aka Alex
AW: VBA: nicht genügend stapelspeicher Fehler 28
05.01.2018 11:57:17
Werner
Hallo Bladuris,
das würde ich mit Select Case angehen. Application.Enableevents hat Uwe ja schon angesprochen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Or Target.Column = 3 Then
If Target.Count > 1 Then
MsgBox "Mehrfachauswahl unzulässig"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
If Target.Row >= 12 And Target 
Gruß Werner
Anzeige
@ Werner
05.01.2018 12:04:18
UweD
hab nicht abgeschrieben, hatte den gleichen Gedanken
LG UweD
AW: @ Uwe
05.01.2018 12:07:05
Werner
Hallo Uwe,
kann ja jeder sagen.;-D
Ist doch kein Problem, zwei Personen, ein Gedanke.
Gruß Werner
AW: VBA: nicht genügend stapelspeicher Fehler 28
05.01.2018 12:17:28
Balduris
Hallo Uwe, hallo Werner,
ich werde mich bei Gelegenheit damit beschäftigen und das probieren.
Erstmal bin ich heilfroh, das es jetzt geht!
Wie bereits erwähnt: ... noch ein langer Weg liegt vor mir.
Danke euch!
VG
Gerne u. Danke für die Rückmeldung. o.w.T.
05.01.2018 12:35:53
Werner

53 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige