Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schwerwiegender Fehler

Schwerwiegender Fehler
15.08.2004 02:20:57
Florian
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


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schwerwiegender Fehler
15.08.2004 03:41:57
Hans
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
Anzeige
Wow!
18.08.2004 00:11:39
Florian
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
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige