Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1384to1388
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
Excel stürzt am Ende des Makros ab
19.10.2014 11:49:02
Endi
Hallo zusammen,
ich hoffe auf eure Hilfe.
Mein Makro, dass alle Funktionen richtig ausführt, jedoch jedesmal am Ende, also wirklich erst mit End Sub, abstürzt und die Meldung bringt." Excel funktiniert nicht mehr . . . "
Das gesamte Projekt besteht aus vielen keinen Modulen, die jeweils kleinere Programmschritte enthalten und über "call" aufgerufen werden.
Es handelt sich um eine Kundendatei, die aus zwei Tabellenblättern besteht, 1. Startmaske zur Eingabe des Kundennamens und 2. Kundenliste, in der die Kunden chronologisch aufgelistet werden. Wird ein neuer Kunde angelegt, startet über das Makro eine neue Excel-Mappe, ein Blanko für neuen Kunden, der Name wird übernommen und mit dem Kundennamen als eigene Excel-Mappe unter dem Namen des Kunden gespeichert und zusätzlich in die Chronologie der Kundendatei (2. Tabellenblatt der Startdatei) aufgenommen. Jetzt können noch weitere ergänzende Daten im neuangelegten Kundenblatt ausgefüllt werden.
Alle Funktionen, auch die im Blanko oder im Kundenblatt, werden über das Makro der ersten Arbeitsmappe (Kundendatei) ausgeführt.
Jedoch immer, wenn die Eingabe mit Blanko unter neuem Namen (Kundenname) mit Speichern abgeschlossen wird, was auch "Liste ergänzen", "Kundenblatt schließen", "zur Startseite zurückkehren" oder "Blanko für weiteren neuen Kunden öffnen" beinhaltet, stürzt Excel ab.
Ich habe schon aufgrund ähnlicher Fälle nach unsauberen Programmschritten gesucht, Zellbezeichnungen abgeglichen etc. komme aber nicht weiter.
Viele Grüße
Endi

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel stürzt am Ende des Makros ab
19.10.2014 12:39:31
{Boris}
Hi Endi'
Ohne deinen Code zu kennen nicht beantwortbar.
VG Boris

AW: Excel stürzt am Ende des Makros ab
19.10.2014 13:47:28
Endi
Hi Boris,
ich wollte nur nicht gleich mit der Tür ins Haus fallen.
Hier ist mein Code
Sub KundenSpeichern_WeitererKunde()
'Speicherung des Kunden, Eintrag in Kundenliste, Datei schließen,Blanko neu öffnen
'Application.ScreenUpdating = False
Dim Pfad As Variant, Datei As Variant
Pfad = Range("B1")
Datei = Range("D1")
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Call Weiter                         'KU4_Weiter
'

Sub Weiter()
'Kundenblatt einrichten und speichern
Dim Speicherort As Variant, Datei As Variant
Datei = Range("D1")
Speicherort = Range("C1")
ActiveSheet.Unprotect ("#")
ActiveSheet.Shapes("Blende1").Visible = False
ActiveSheet.Shapes("Suchfunktion").Visible = False
ActiveSheet.Shapes("Weiter").Visible = True
ActiveSheet.Shapes("DatenÄndern").Visible = False
ActiveSheet.Shapes("KdSpeichernWeiter").Visible = True
ActiveSheet.Shapes("Weiter").Visible = True
Range("F1") = "Kundenblatt"  'Als Kundenblatt indizieren
ActiveSheet.Protect ("#")
Stop
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'        Call Sicherungskopie 'Legt eine Sicherungskopie an und kehrt herher zurück
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Call KundenlisteErgänzen 'Modul Kundeliste aufrufen und dort Kunden eintragen
'

Sub KundenlisteErgänzen()
'Wechsel zum Tabellenblatt Kundenliste in der  _
Startdatei___________________________________________________________________________
Dim Datei As Variant
Datei = Range("D1")
Windows("Kundendatei.xlsm").Activate
Sheets("Kundenliste").Visible = True                        'Kundenliste aufrufen
Sheets("Kundenliste").Select
ActiveSheet.Unprotect "#"
Application.CutCopyMode = False
If ActiveSheet.FilterMode = True Then 'Klärung ob Autofilter schon gesetzt, dann löschen
ActiveSheet.ShowAllData                                                              '       _
eventuell Filtermodus löschen
ActiveSheet.Protect "#", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End If
'Übernahme der Adressdaten aus der neuangelegten  _
Kundendatei__________________________________________________________________________________________
'Datei des Kunden aktivieren
Workbooks(Datei).Activate
Range("C8:C12").Select
Selection.Copy
Workbooks("Kundendatei.xlsm").Sheets("Kundenliste").Activate        'Kundenliste für Neueintrag  _
positionieren
'ActiveSheet.ShowAllData
Range("A5").Select                                                                              _
'Unterste Zeile suchen
Cells.Find(What:=Range("A1"), After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 1).Select
ActiveSheet.Unprotect "#"
Stop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
ActiveCell.Offset(0, -1).Range("A1:G1").Select          'Zeile markieren und Linie ziehen
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
End With
ActiveCell.Offset(0, 6).Range("A1") = Range("G1")       'Datum eintragen
ActiveCell.Offset(0, 0) = Range("A1") + 1                                                 ' _
Lfd Nr für Neukunden hochzählen
Range("A1") = ActiveCell                                                                     _
'und Suchparameter in Zelle A1anpassen
ActiveCell.Offset(0, 0).Select                                                               _
'Aktive Zelle an den Rand neben letzem Eintrag positionieren
Application.CutCopyMode = False                         'Kopie aktivierte Zellen  _
deaktivieren
Sheets("Startseite").Select
Sheets("Kundenliste").Visible = False
Stop
'Über Modul: Ku4_Weiter zum Blanko zurück >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If Workbooks(Datei).Sheets("Behandlung").Range("F1") = "Kundenblatt" Then Exit Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Stop
Range("C8:C9").Select                                                     'Startseite leeren
Selection.ClearContents
Range("C8").Select
End Sub

Anzeige
AW: Excel stürzt am Ende des Makros ab
19.10.2014 12:42:15
fcs
Hallo Endi,
trotz deiner ausführlichen Problembeschreibung ist es schwierig eine Lösung vorzuschlagen.
Wie außert sich der Absturz?
- Excel - Fenster friert ein mit Anzeige "Keine Rückmeldung" im Fensternamen?
- Excel wird einfach geschlossen?
- Excel wird beendet - Excel versucht aber noch Daten zu retten?
Was passiert den wenn du in den zuletzt aufgerufenen Subs Haltepunkte setzt und mit F8 schrittweise den Code ausführst? Schmiert Excel dann tatsächlich mit der Ausführung der letzten End Sub Anweisung ab? Oder schafft Excel es nicht hinter die zugehörige Call-Anweisung zurückzuspringen?
Ohne Kenntnis der Problemmakros kann man da nicht weiter helfen.
Gruß
Franz

Anzeige
AW: Excel stürzt am Ende des Makros ab
19.10.2014 14:14:24
Endi
Hallo Franz
danke auch für deine Reaktion.
Ich habe den Code mittlerweile eingestellt.
Excel friert nicht ein, sondern es kommt "..versucht Daten zu retten und
öffnet die gesicherten Versionen.
Es ist so, dass kein Absurz erfolgt, wenn ich kurz vor Ende mit F8 den letzten Schritt mache.
Das war mir vor meinem Blog noch nicht aufgefallen und muss mit den vorherigen
Änderungen zusammen hängen. Denn vorher kam der Absturz in jedem Fall.
Gruß Endi

Zeigst Du uns noch Deinen Code?
20.10.2014 21:17:28
{Boris}
Hi Endi,
...denn falls nicht, ist die Frage nicht mehr offen, da OHNE Kenntnis des Codes keine konkrete Hilfe möglich ist.
VG, Boris

Anzeige
AW: Zeigst Du uns noch Deinen Code?
20.10.2014 22:52:32
Endi
Hi Boris,
ich habe den Code doch direkt nach deiner Antwort eingestellt. ?!?
Ist da was schief gelaufen?
also noch mal
Mein Code
Sub KundenSpeichern_WeitererKunde()
'Speicherung des Kunden, Eintrag in Kundenliste, Datei schließen,Blanko neu öffnen
'Application.ScreenUpdating = False
Dim Pfad As Variant, Datei As Variant
Pfad = Range("B1")
Datei = Range("D1")
'Stop
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Call Weiter                         'KU4_Weiter
'

Sub Weiter()
'Kundenblatt einrichten und speichern
Dim Speicherort As Variant, Datei As Variant
Datei = Range("D1")
Speicherort = Range("C1")
ActiveSheet.Unprotect ("#")
ActiveSheet.Shapes("Blende1").Visible = False
ActiveSheet.Shapes("Suchfunktion").Visible = False
ActiveSheet.Shapes("Weiter").Visible = True
ActiveSheet.Shapes("DatenÄndern").Visible = False
ActiveSheet.Shapes("KdSpeichernWeiter").Visible = True
ActiveSheet.Shapes("Weiter").Visible = True
Range("F1") = "Kundenblatt"  'Als Kundenblatt indizieren
ActiveSheet.Protect ("#")
Stop
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'        Call Sicherungskopie 'Legt eine Sicherungskopie an und kehrt hierher zurück
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Call KundenlisteErgänzen 'Modul Kundeliste aufrufen und dort Kunden eintragen
'
Sub KundenlisteErgänzen()
'Kundenblatt(Blanko) noch aktiv
'Wechsel zum Tabellenblatt Kundenliste in der  _
Startdatei___________________________________________________________________________
Dim Datei As Variant
Datei = Range("D1")
Windows("Kundendatei.xlsm").Activate
Sheets("Kundenliste").Visible = True                        'Kundenliste aufrufen
Sheets("Kundenliste").Select
ActiveSheet.Unprotect "#"
Application.CutCopyMode = False
If ActiveSheet.FilterMode = True Then 'Klärung ob Autofilter schon gesetzt, dann löschen
ActiveSheet.ShowAllData             'eventuell Filtermodus löschen
ActiveSheet.Protect "#", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End If
'Übernahme der Adressdaten aus der neuangelegten  _
Kundendatei__________________________________________________________________________________________
'Datei des Kunden aktivieren
Workbooks(Datei).Activate
Range("C8:C12").Select
Selection.Copy
Workbooks("Kundendatei.xlsm").Sheets("Kundenliste").Activate        'Kundenliste für Neueintrag  _
positionieren
'ActiveSheet.ShowAllData
Range("A5").Select                                                                    ' _
Unterste Zeile suchen
Cells.Find(What:=Range("A1"), After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 1).Select
ActiveSheet.Unprotect "#"
Stop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
ActiveCell.Offset(0, -1).Range("A1:G1").Select          'Zeile markieren und Linie ziehen
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
End With
ActiveCell.Offset(0, 6).Range("A1") = Range("G1")       'Datum eintragen
ActiveCell.Offset(0, 0) = Range("A1") + 1               'Lfd Nr für Neukunden hochzählen
Range("A1") = ActiveCell                                'und Suchparameter in Zelle  _
A1anpassen
ActiveCell.Offset(0, 0).Select                          'Aktive Zelle an den Rand neben  _
letzem Eintrag positionieren
Application.CutCopyMode = False                         'Kopie aktivierte Zellen  _
deaktivieren
Sheets("Startseite").Select
Sheets("Kundenliste").Visible = False
Stop
'Über Modul: Ku4_Weiter zum Blanko zurück >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If Workbooks(Datei).Sheets("Behandlung").Range("F1") = "Kundenblatt" Then Exit Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Stop
Range("C8:C9").Select                                        'Startseite leeren
Selection.ClearContents
Range("C8").Select
'Call SpeichernSchließen
End Sub

Anzeige
Mea maxima culpa...
20.10.2014 23:08:38
{Boris}
Hi Endi,
...hatte ich komplett übersehen... :-//
Wozu stehen denn die Stop-Anweisungen im Code?
VG, Boris

AW: Mea maxima culpa...
21.10.2014 09:25:57
Endi
Hi Boris,
die sind noch vom Erstellen des Codes. Ich prüfe zwischendrin dann immer ob das Makro macht
was ich geplant hatte. Deaktiviere ich immer, wenn ich dann fertig bin oder die Stelle im Code
geprüft ist.
Ps. Ich habe nur einen Teil der Module von insgesamt ~ 10 eingestellt, nämlich nur die, die bei Ausführung der Funktion beteiligt sind. Ich hoffe die anderen haben dann keinen Einfluss auf den Excelabsturz, weil sie ja nicht aufgerufen werden oder täusche ich mich da?
VG
Endi

Anzeige
AW: Mea maxima culpa...
21.10.2014 09:29:40
{Boris}
Hi Endi,
ich denke, dass man das nur beurteilen kann, wenn man die komplette Mappe mit dem kompletten Code hat.
Ich lass aber nochmal offen.
VG, Boris

AW: Mea maxima culpa...
21.10.2014 09:35:27
Endi
Hi Boris,
wäre ja kein Problem, ich wollte nur nicht zu viel einstellen.
Was meinst du mit, ich lass noch mal offen.
Soll ich die komplette Mappe hochladen? Das könnte ich dann heute Abend.
VG
Endi

AW: Mea maxima culpa...
21.10.2014 11:45:40
fcs
Hi Endi,
ich hab mir deine Makros auch noch einmal angesehen.
In der Theorie ist das schwierig nachzuvollziehen, da hier viele Activate- und Select-Anweisungen enthalten sind.
Insgesamt scheinen ja 3 oder 4 Dateien in den gesamten Ablauf involviert zu sein.
- Eine Datei mit Userform und Makros
- eine Kundendatei (= aktive Datei zu Beginn des Makrostarts?)
- C:\Kundendatei\BlankoFormular\BlankoMaren.xlsm
- Kundendatei.xlsm
Hast du denn inzwischen herausgefunden, bis zu welcher Code-Zeile die Makros funktionieren, indem du nacheinander die Stop-Zeilen deaktivierst?
Meine Vermutung ist, dass durch das Speichern der Datei unter einem neuen Namen irgendetwas nicht korrekt aktualsiert wird, so dass der Verweis auf den Dateinamen falsch ist. Im F8-Shrittmodus stimmt es dann zufällig.
Ich empfehle hier mit Objektvariablen für die betreffenden Arbeitsmappen zu arbeiten. Das ist einfacher in der Handhabung, als mit den Namen der Mappen zu arbeiten.
Nachfolgend mal ein erster Ansatz, der aber noch viel Spielraum für Optimierung hat, insbesondere was die Selektion von Zellen im Code angeht.
Gruß
Franz
Sub KundenSpeichern_WeitererKunde()
'Speicherung des Kunden, Eintrag in Kundenliste, Datei schließen,Blanko neu öffnen
'Application.ScreenUpdating = False
Dim Pfad As Variant, Datei As Variant
Pfad = Range("B1")
Datei = Range("D1")
'Stop
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Call Weiter                         'KU4_Weiter
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'        Call Sicherungskopie 'Legt eine Sicherungskopie an und kehrt hierher zurück
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Call KundenlisteErgänzen 'Modul Kundeliste aufrufen und dort Kunden eintragen
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If wkbKunde.Sheets("Behandlung").Range("F1") = "Kundenblatt" Then Exit Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Stop
Range("C8:C9").Select                                        'Startseite leeren
Selection.ClearContents
Range("C8").Select
'Call SpeichernSchließen
End Sub

Anzeige
AW: Mea maxima culpa...
21.10.2014 13:12:02
Endi
Hallo Franz,
danke für deine Nachricht.
Deine Vorschläge kann ich leider erst am Abend umsetzen. Aber es ist definitiv so, dass Excel erst mit dem letzten "End SUB" abschmiert. Ich habe deshalb vor dem Ende die msg-Box zur Kontrolle. Bis dahin läuft alles, egal ob über F8 oder auch beim Komplettdurchlauf, richtig ab. Es wirde alles richtig in den Modulen abgearbeitet, Dateneinträge, Kopieren, Öffnen und Schließen des Blankos, der neu erstellten Kundendatei, Löschen der Eingabefelder etc. Nur mit "End Sub" kommt dann der Absturz.
Vielen Dank
Endi

AW: Mea maxima culpa...
22.10.2014 16:19:32
Endi
Hallo zusammen,
Habe jetzt meinen Code auf einem anderen Rechner laufen lassen, ohne bisher etwas geändert zu haben,
. . er funktioniert ohne Absturz. Nur zuhause funktioniert er nicht. ? ?
VG
Endi

Anzeige
AW: Mea maxima culpa...
25.10.2014 11:03:26
ulrich.endrass
Hallo zusammen,.
bin leider die ganze Woche nicht dazu gekommen , deshalb melde ich mich erst jetzt.
Ich habe festgestellt, dass das Makro unter Excel 2010 ohne Probleme läuft nicht aber unter 2007.
Geschrieben habe ich die Makros allerdings auf beiden Rechnern, also 2010 und 2007, je nachdem wo ich gearde war.
Laufen soll das Makro aber am Ende auf einem PC mit 2007.
VG
Endi

107 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige