Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ScrollBar
BildScreenshot zu ScrollBar ScrollBar-Seite mit Beispielarbeitsmappe aufrufen

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"