Schwerwiegender Fehler
 |
Betrifft: Schwerwiegender Fehler
von: Florian Meyer
Geschrieben am: 15.08.2004 02:20:57
Guten Tag!
Langsam bin ich verzweifelt. Etwa seit März begleitet mich beim Starten meiner Datei (rund 3,6 MB) regelmäßig die Mitteilung "schwerwiegender Fehler - Problem bitte auch an Microsoft berichten". Seit Neuestem erscheint außerdem vorher die Fehlermeldung "Systemfehler &H800000FFF (-2147418113) Schwerwiegender Fehler".
Die Datei dient als XLT-Vorlage, um unter anderem Kundendaten zu erfassen. Anbei ist der Workbook_Open()-Teil, der die Probleme verursacht. Und nun kommt der Hammer:
Wenn der Fehler auftritt, dann starte ich die XLS-Datei ohne Makros und füge - irgendwo im Code! - die Zeile MsgBox "" ein. Wenn ich die Datei dann wieder mit Makros starte, dann läuft wieder alles.
Wenn ich diese Änderung aber von vorneherein in der XLT-Datei vornehme, dann erscheint die Fehlermeldung trotzdem. Wo gibt's denn sowas, dass eine einfache MsgBox den Rechner "ablenkt"?
Wer kann mir helfen?
Danke und Gruß aus Berlin von Florian
Private Sub Workbook_Open()
On Error GoTo Fehlerbehandlung
Dim EndeTestzeit As Boolean
Dim EndeProgrammversion As Boolean
Dim EndeProgrammversionEndgültig As Boolean
Dim Pfad As String
Application.CommandBars("Baufinanzierung_Symbole").Visible = False
Angaben = Worksheets("Finanzierungsangaben").Range("Angaben")
EndeTestzeit = Worksheets("Kunden").Range("Ende_Testzeit")
EndeProgrammversion = Worksheets("Kunden").Range("Ende_Programmversion")
EndeProgrammversionEndgültig = Worksheets("Kunden").Range("Ende_Programmversion_endgültig")
Pfad = Worksheets("Finanzierungsangaben").Range("Pfad")
With Application
.WindowState = xlMaximized
.DisplayFullScreen = True
.CommandBars("Full Screen").Visible = False
.DisplayStatusBar = False
.DisplayAlerts = False
End With
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
End With
If Range("leere_Vorlage") And EndeProgrammversion Then
MsgBox "Die Version des Programms ist nicht mehr aktuell." & Chr(13) & _
"Bitte installieren Sie eine neue Version.", vbInformation + vbOKOnly, _
"Neue Version installieren!"
End If
If Range("leere_Vorlage") And EndeProgrammversionEndgültig Then
MsgBox "Die Version des Programms ist nicht mehr aktuell." & Chr(13) & _
"Das Programm wird beendet.", vbInformation + vbOKOnly, _
"Neue Version installieren!"
Application.DisplayAlerts = False
ThisWorkbook.Close
End If
If Worksheets("Berater").Range("Tester") And EndeTestzeit Then
MsgBox "Die Testzeit ist abgelaufen.", vbCritical + vbOKOnly, " "
Application.DisplayAlerts = False
ThisWorkbook.Close
End If
PullDownMenü
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.DisplayAlerts = True
With ActiveWindow
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
End With
If Range("Datumsangabe") = "" Then
Range("Datumsangabe") = Format(Now, "dddd, d. mmmm yyyy, h.mm") & " Uhr"
End If
Exit Sub
Fehlerbehandlung:
Application.DisplayAlerts = False
ThisWorkbook.Close
End Sub
Code eingefügt mit Syntaxhighlighter 2.5
Betrifft: AW: Schwerwiegender Fehler
von: Hans W. Herber
Geschrieben am: 15.08.2004 03:41:57
Hallo Florian,
teste mal den nachfolgenden, etwas abgespeckten Code, der ganz nebenbei den Vorteil hat, dass der Anwender nach dem vorzeitigen Schließen der Arbeitsmappe seine vertraute Excel-Umgebung wiederfindet:
Private Sub Workbook_Open()
Dim Angaben As Variant
Dim vWindow As Variant
Dim bStatus As Boolean
Dim EndeTestzeit As Boolean
Dim EndeProgrammversion As Boolean
Dim EndeProgrammversionEndgültig As Boolean
Dim Pfad As String
On Error GoTo ERRORHANDLER
vWindow = Application.WindowState
Application.CommandBars("Baufinanzierung_Symbole").Visible = False
Angaben = Worksheets("Finanzierungsangaben").Range("Angaben").Value
EndeTestzeit = Worksheets("Kunden").Range("Ende_Testzeit").Value
EndeProgrammversion = Worksheets("Kunden").Range("Ende_Programmversion").Value
EndeProgrammversionEndgültig = Worksheets("Kunden").Range("Ende_Programmversion_endgültig").Value
With Application
.WindowState = xlMaximized
.DisplayFullScreen = True
.CommandBars("Full Screen").Visible = False
End With
If Range("leere_Vorlage").Value And EndeProgrammversion Then
MsgBox "Die Version des Programms ist nicht mehr aktuell." & Chr(13) & _
"Bitte installieren Sie eine neue Version.", vbInformation + vbOKOnly, _
"Neue Version installieren!"
End If
If Range("leere_Vorlage").Value And EndeProgrammversionEndgültig Then
MsgBox "Die Version des Programms ist nicht mehr aktuell." & Chr(13) & _
"Das Programm wird beendet.", vbInformation + vbOKOnly, _
"Neue Version installieren!"
GoTo ERRORHANDLER
End If
If Worksheets("Berater").Range("Tester").Value And EndeTestzeit Then
MsgBox "Die Testzeit ist abgelaufen.", vbCritical + vbOKOnly, " "
GoTo ERRORHANDLER
End If
Call PullDownMenü
Application.DisplayStatusBar = True
If Range("Datumsangabe") = "" Then
Range("Datumsangabe") = Format(Now, "dddd, d. mmmm yyyy, h.mm") & " Uhr"
End If
Exit Sub
ERRORHANDLER:
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.WindowState = vWindow
.DisplayFullScreen = False
.DisplayStatusBar = bStatus
End With
ThisWorkbook.Close savechanges:=False
End Sub
Tritt der Fehler immer noch auf (möglicherweise auch durch die Sub zum Erstellen des Kontextmenüs verursacht), bleibt nur das schrittweise testen, indem Du eine Zeile nach der anderen auskommentierst.
gruss hans
 |
Betrifft: Wow!
von: Florian Meyer
Geschrieben am: 18.08.2004 00:11:39
Hallo, Hans!
Danke für den Code. Hat bei mir etwas länger gedauert, da ich erst einmal die Reaktionen der Anwenderschaft abwarten wollte. Jetzt sind zwei volle Tage vergangen, zehn Anwender haben's getestet, und noch trat der Fehler nicht auf.
Neben der Abspeckung und der professionellen Fehlerroutine habe ich mir als wesentlich herausgepickt: Range("...").value und Call Funktionsname.
Kann's tatsächlich daran gelegen haben?
Inzwischen habe ich den gesamten Code bezüglich dieser beiden Merkmale angepaßt. Trotzdem wird es wohl noch Wochen dauern, bis ich vollends das Vertrauen in die Datei zurückgewonnen habe. Diese schrecklichen Mails ("Hallo, Florian, der Fehler ist schon wieder aufgetreten...") haben mich einfach total heruntergezogen.
Vielen, vielen Dank, Hans!
Florian Meyer aus Berlin
Beiträge aus den Excel-Beispielen zum Thema "Schwerwiegender Fehler"