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

Fehlerroutine global

Fehlerroutine global
04.12.2007 09:17:15
Oliver
Guten morgen zusammen,
ich arbeite bereits mit lokalen Fehlerroutingen "On Error Resume next", "On Error Goto XYZ".
Nun möchte ich aber in meinem Programm irgendwo global für alle Ereignisse und Module eine Fehlerroutine einbauen. Ich stelle mir das in etwa so vor:
Public On Error Goto Fehlerbehandlung

Sub Fehlerbehandlung
Jetzt_mach_was...
End Sub


Das heißt, es solle an jeder Stelle im Programm, wo ein Fehler auftritt diese Fehlerbehandlungsroutine gestartet werden. Es soll dann allerdings unabhängig von einem Bereich, der selbst mit einer partiellen Fehlerroutinge belegt wurde funktionieren. D.h. der Fehler der zwischen "On Error..." bis "On Error goto 0" soll nicht mit in die Fehlerbehandlung genommen werden!
Ich wäre für Hilfe wirklich dankbar - habe keine Ahnung wo ich ansetzen muss!
Gruß,
Oliver.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlerroutine global
04.12.2007 10:44:38
Luschi
Hallo Oliver,
ich habe vor 3 Jahren mehrere Excel-Application übernommen (vom selben Entwickler), in der es nur von Fehler-Abfang-Routinen wimmelte. Irgendwann merkte ich, daß zwar das Vba-Programm wunderbar (störungsfrei) lief, aber die Ergebnisse nicht stimmten. Das war besonders ärgerlich, da diese Excel-Programme von Steuerberatern sowie anderen Finanz-Jongleuren gerne genutzt wurden und (Gott sei Dank), immer noch verwendet werden.
Daraufhin entfernte ich alle 'On Error'-Befehle (natürlich per Vba) und stellte fest:
- teilweiser Zugriff auf die falschen Tabellen
- verschiedene Application-Eigenschaften falsch gesetzt
- Range-Bereiche entsprachen nicht dem tatsächlichen Gegebenheiten
- verwendete Namen für Zellen gab es schon nicht mehr bzw. wurden irgend wann mal umbenannt
- usw. usf.
Deshalb kann ich Dir nur empfehlen, die Fehler-Abfang-Methoden sparsam einzusetzen und schon gar keine globalen Methoden dazu zu entwickeln. Da diese Methoden den Sprung-Befehlen gleichen, suchst Du Dich später tot, wohin Excel-Vba jetzt abgebogen ist.
Selbstverständlich gibt es heute bei mir auch noch diese Behle, aber nur lokal und für eine bestimmte Sequenzen; danach wird die Fehler-Routine sofort wieder außer Kraft gesetzt.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Fehlerroutine global
04.12.2007 11:27:00
Oliver
Hallo Luschi,
so mache ich das jetzt momentan auch. An Stellen im Programm wo es viel zu umständlich wäre nach der Gültigkeit von Werten zu suchen.
Jetzt momentan ist das Problem, dass eine Freigegebene Arbeitsmappe schreibgeschützt ist. Diesen Schreibschutz hebe ich NUR dann auf, wenn auch die Makros aktiviert sind (in der Workbook_Open). So hat jeder Anwender entsprechend seinem Benutzerkreis verschiedene Möglichkeiten Einträge zu machen. Wenn nun das Programm auf Grund eines mir noch nicht bekannten Fehlers aussteigt, dann sind damit auch die Makros deaktiviert (application.enableevents=false). Die Folge: der Benutzer kann eintragen was er will und die Datei speichern.
Und hierzu wollte ich eine Fehlerroutine, die den Schreibschutz wieder setzt!
Gruß,
Oliver.

Anzeige
AW: Fehlerroutine global
04.12.2007 13:11:56
fcs
Hallo Oliver,
die Fehlerbehandlung in Makros sollte immer auch einen geordneten Rückzug aus den Prozeduren beinhalten.
In kritischen Fällen schaut das bei mir dann z.B. so aus:

Public boFehler As Boolean
Sub Prozedur1()
boFehler = False
Call Prozedur2
If boFehler = True Then Exit Sub
End Sub
Sub Prozedur2()
Dim wks As Workbook ' usw.
Application.EnableEvents = False
On Error GoTo Fehlerbehandlung
'normaler Code
GoTo Ende
Fehlerbehandlung:
MsgBox "Fehler " & Err.Number & "ist aufgetreten!" & vbLf & vbLf & _
Err.Description
boFehler = True
Select Case Err.Number
Case 1004
Case Else
End Select
Ende:   'Sprungadresse für reguläres Beenden der Prozedur
'Rücksetzen von Variablen
Set wks = Nothing
Application.EnableEvents = True
End Sub

So kann man mit der Fehlerbehandlung auch kritische Programmeinstellungen zurücksetzen und die Prozeduren werden nicht abgebrochen sondern kontrolliert beendet.
Diese Fehlerbehandlung aktiviere aber meistens erst dann, wenn der "Normalbetrieb" fehlerffrei läuft.
Gruß
Franz

Anzeige
AW: Fehlerroutine global
04.12.2007 15:29:00
Jan
Hi,
Schutzeinstellungen können bei freigegebenen Mappen gar nicht geändert werden, weder
von Hand, noch mit VBA.
mfg Jan

AW: Fehlerroutine global
05.12.2007 08:26:01
Oliver
Hallo Jan,
klar kann ich den Schreibschutz einer Freigebenen Arbeitsmappe ändern. Die Datei wurde mit Schreibschutz und Kennwort abgespeichert und anschließend als Freigegeben gespeichert. Den Schreibschutz hebt man so auf:
application.changefileacces xlreadwrite, Passwort, true
Gruß,
Oliver.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige