Excel Makro stürzt nach 10min ab
#1
Hallo zusammen,

ich habe in mein Makro eine Schleife eingebaut, diese muss den Vorgang bis zu 400mal wiederholen.

Nach ca. 10min Laufzeit bekomme ich jedes mal an der gleichen Stelle den gleichen Fehler.

Ich arbeite mit Excel2016, muss hier evtl. was an den Einstellungen angepasst werden oder liegt der Fehler wo anders?

Danke für Eure Hilfe.

Grüße


  Problem Event Name:                        APPCRASH
  Application Name:                            EXCEL.EXE
  Application Version:                          16.0.8201.2200
  Application Timestamp:                    59d5aab9
  Fault Module Name:                          mso20win32client.dll
  Fault Module Version:                      0.0.0.0
  Fault Module Timestamp:                59d5c1a7
  Exception Code:                                  01360401
  Exception Offset:                                001296f8
  OS Version:                                          6.1.7601.2.1.0.16.7
  Locale ID:                                            1031

Additional information about the problem:
  LCID:  1033
  skulcid: 1033
Top
#2
Moin! 
Zeig mal den Code.
Vielleicht kann man ihn optimieren. 

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Sub Wiederholung ()

If Worksheets("Sheet1").Range("KW1") > 0 Then
        Call Schritt29
Else: Call Schritt37
End If

End Sub


Das ist der Code welcher die Wiederholung auslöst, es müssen mehrere Makros durchlaufen werden danach. Abgebrochen wird immer an der gleichen Stelle zur selben Zeit.
Top
#4
Hi

und wo ist da die Schleife?
welcher Code versteckt sich denn hinter Schritt29 und Schritt37?

MfG Tom
Top
#5
Es handelt sich leider um große Makros mit sensiblen Daten, weshalb es auf die schnelle schwierig ist sie hier rein zu stellen.

Aber ich habe jetzt folgende Lösung gefunden welche funktioniert:

Ich halte den Lauf immer wieder an und starte ihn neu, dadurch ist das Problem "gelöst". Trotzdem würde ich es gerne automatisch durchlaufen lassen. Heißt das Problem sollte an der Dauer der Laufzeit liegen oder?

Danke

If Worksheets("Sheet1").Range("KW1") > 400 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 400 Then
Call MsgBox("Schritt 2 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 340 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 340 Then
Call MsgBox("Schritt 3 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 280 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 280 Then
Call MsgBox("Schritt 4 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 220 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 220 Then
Call MsgBox("Schritt 5 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 160 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 160 Then
Call MsgBox("Schritt 6 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 100 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 100 Then
Call MsgBox("Schritt 7 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 40 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 40 Then
Call MsgBox("Schritt 8 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") > 1 Then
Call Schritt291
ElseIf Worksheets("Sheet1").Range("KW1") = 1 Then
Call MsgBox("Schritt 9 Beendet, WEITER drücken", vbInformation)
ElseIf Worksheets("Sheet1").Range("KW1") = 0 Then
Call Schritt381
End If
Top
#6
Hallo,

also nichts für ungut, aber dieser Quelltext ist eine einzige Katastrophe. 

Was soll das: > 400, = 400, > 340, = 340, > 280, = 280, > 220, = 220, > 160, = 160, > 100, = 100, > 40, = 40, > 1, = 1, = 0, dadurch wird ja irgendwie alles abgedeckt, dann auch noch in jedem Fall die gleiche Verzweigung. Wenn der Rest auch so programmiert ist, brauchst du dich über nichts wundern. 

Was machen sensible Daten in einem Makro?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#7
Ich befürchte, dass ich das verstanden habe!  Blush
(grob die Beeinflussung des Worksheets("Sheet1").Range("KW1") durch das ominöse Call Schritt291)

@KarlK:
Nimm Dir die Zeit und stelle eine (anonymisierte) Datei ein.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#8
Folgendes Makro wird immer als Ursache des Absturzes angezeigt:

Sub Schritt33()

Worksheets("Sheet1").Range("HB2:KW2").Delete shift:=xlUp
Call Schritt37

End Sub


Kann man dieses Makro anders schreiben um ein Absturz zu verhindern?

Danke
Top
#9
Hallo,

schwierig zu beantworten, wenn man nicht weiß, was für Aktionen noch im Hintergrund laufen. Das können zum Beispiel Ereignismakros sein oder Berechnungen, die sich auf diesen Bereich beziehen oder oder oder

Code:
Sub Schritt33()

Application.EnableEvents = False
Worksheets("Sheet1").Range("HB2:KW2").Delete shift:=xlUp
Application.EnableEvents = True
Call Schritt37

End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#10
Der nächste Schritt nach diesen Makro lautet:

Worksheets("Sheet1").Range("KW1").Formula = "=Sum(KW2:KW1550)"

Hier wird die Summe zusammen gezählt in einer Spalte wo die Zeile 1 mit gelöscht wurde.

Davor wird nichts ausgeführt was zeitnah mit diesen Bereich zu tun hatte.

Würde es was bringen die Löschung früher durchzuführen?
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste