Zum Abschluss der Zeigefinger!
Ich hoffe, dass ich Ihnen die Fehlerbehandlung ansatzweise näher bringen konnte.
Aber ich möchte doch nochmals auf die wichtigsten Dinge eingehen:
Hinterlassen Sie dem Anwender immer das System so, wie Sie es vorgefunden haben.
Bemühen Sie sich, temporäre Änderungen so schnell wie möglich (und sinnvoll) wieder zurückzusetzen.
Es ist oft viel sinnvoller, etwas an verschiedenen Stellen im Code ein-auszuschalten, als dies für das gesammte Projekt zu tun.
Sorgen Sie unbedingt dafür, dass alle Veränderungen in einem Bereich ablaufen, den Sie vollkommen unter der Fehlerkontrolle haben! Alles andere ist fahrlässig.
Nehmen Sie nicht etwas als Standard an!!!
Ein Beispielcode, den ich immer wieder sehe, ist z.B.
Application.Calculation = xlCalculationManual
... Code
Application.Calculation = xlCalculationAutomatic
Dies dann zwar schon oft in einer Fehlerbehandlung eingeschlossen aber was soll dies?
Wer zum Henker hat denn gesagt, dass vorher die Calculation auf automatisch stand?
Merken Sie sich den Zustand, bevor Sie etwas verändern und dann zurücksetzen.
Public Sub Beispiel()
Dim iOldCalc As Long
On Error GoTo Fehler
iOldCalc = Application.Calculation
Application.Calculation = xlCalculationManual
'Code
Aufraeumen:
Application.Calculation = iOldCalc
Exit Sub
Fehler:
MsgBox Err.Description ' Achtung faule Variante
Resume Aufraeumen
End Sub
Ganz schlimm sind Dinge, die eine Grundeinstellung der Anwendung verändern.
z.B. Application.DisplayAlerts.
Wer diese auf False setzt, muss dafür Sorge tragen, dass diese wieder True werden.
(Hier brauche ich es mir nicht zu merken, da es keine Option ist sondern eine temporäre Ausschaltung der Warnmeldung)
Also: Fehlerbehandlung nicht nur blauäugig was man glaubt, was mal war wieder einschalten, auch unbedingt Anwendungsreaktionen wieder auf den "normalen" Zustand zurückschalten.