Registriert seit: 19.10.2020
Version(en): 2016
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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)
Registriert seit: 19.10.2020
Version(en): 2016
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.
Registriert seit: 12.04.2014
Version(en): Office 365
Hi
und wo ist da die Schleife?
welcher Code versteckt sich denn hinter Schritt29 und Schritt37?
MfG Tom
Registriert seit: 19.10.2020
Version(en): 2016
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
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Ich befürchte, dass ich das verstanden habe!
(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)
Registriert seit: 19.10.2020
Version(en): 2016
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 19.10.2020
Version(en): 2016
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?