Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
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
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler global abfangen?!

Fehler global abfangen?!
17.04.2007 10:51:25
Til
Hallo zusammen,
ich suche nach einer Möglichkeit, Fehlermeldungen global abzufangen.
Ich habe nämlich eine relativ komlexe Anwendung geschrieben und weiß nicht ganz genau, ob ich überall Fehlerroutinen eingebaut habe, die unschöne Fehlermeldungen abzufangen.
Gibt es einen Weg, dieses quasi über allen Makros global mit einer einzigen Routine abzuwickeln?!
Das würde mir endlose Sucherei und Fehlercode Platziererei ersparen!!
Schon mal danke für Eure Hilfe!
Gruß Till

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler global abfangen?!
17.04.2007 11:41:00
OttoH
Hallo Till,
könnte dies ein Ansatz sein?

Sub eins()
On Error GoTo fehler
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = [A1]
b = [A2]
c = a + b
MsgBox c
Exit Sub
fehler:
Call fehlerroutine
End Sub



Sub zwei()
On Error GoTo fehler
Dim d As Integer
Dim e As Integer
Dim f As Integer
d = [A3]
e = [A4]
f = d + e
MsgBox f
Exit Sub
fehler:
Call fehlerroutine
End Sub



Sub fehlerroutine()
MsgBox Err.Description
End Sub


Eins und zwei erzeugen Fehler, wenn in den Zellen bspw. Buchstaben stehen. Alle SUB's erhalten die ONERROR-Anweisung am Anfang und die CALL Fehler - Anweisung am Ende.
Gruß OttoH

Anzeige
AW: Fehler global abfangen?!
17.04.2007 13:00:00
Till
Hallo Otto,
das war schon mal sehr brauchbar. Vielen Dank!
Ich such aber auch nach einer Methode, solche Fehler abzufangen, die bei fehlenden DLLs auftauchen. Z.B. muss in meiner Anwendung unter System32 die Datei "mscomct2.ocx" sowie die Datei "MSCAL.OCX" vorhanden sein.
Kann man das auch irgendwie "nett" abfangen?
Danke!
Gruß Till

AW: Fehler global abfangen?!
17.04.2007 13:31:35
OttoH
Hallo Till,
schau Dir das mal an:

Sub DateienTesten()
Dim c As String
c = Dir("C:\WINNT\system32\mscomct2.ocx")
If c = "" Then
MsgBox "Die mscomct2.ocx fehlt."
Else
MsgBox "Alles klar"
End If
End Sub


Gruß OttoH

Anzeige
AW: Fehler global abfangen?!
18.04.2007 19:08:47
Till
Gallo Otto,
ja....so wird ein Schuh draus.
Das einzige was evtl. auf dem ein oder anderen Rechner, wo das laufen soll anders ist, ist der Pfad des Systemordners!
Kann man den noch irgendwie variabel gestalten.
Hab da folgendes gefunden:

Option Explicit
Private Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
Private Const kLength = 255&
Public Function GetSysDir(Optional ByVal AddBackslash As Boolean) _
As String
Dim nBuffer As String
Dim nReturn As Long
nBuffer = Space(kLength)
nReturn = GetSystemDirectory(nBuffer, kLength)
If nReturn > 0 Then
If AddBackslash Then
GetSysDir = Left(nBuffer, nReturn) & "\"
Else
GetSysDir = Left(nBuffer, nReturn)
End If
End If
End Function


Komm da aber noch nicht vollständig mit klar.
Wie kann ich in Deine Pfadangabe den Befehl "GetSysDir" integrieren?
Ich hab mal das hier versucht, was aber nicht funktioniert:


Sub DateienTesten()
Dim c As String
Dim d As String
c = Dir("GetSysDir\mscomct2.ocx")
d = Dir("GetSysDir\MSCAL.OCX")
If c = "" And d = "" Then
MsgBox "Die erforderlichen Systemdateien fehlen.", vbInformation, " "
Else
MsgBox "Alles klar", vbInformation, " "
End If
End Sub


Danke schon mal!
Gruß Till

Anzeige
AW: Fehler global abfangen?!
19.04.2007 09:33:01
OttoH
Hallo Till,
jetzt musst Du nur noch den GetSysDir in meine Prozedur einbauen: etwa so:
Private Declare Function GetSystemDirectory Lib "kernel32" _
Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
Private Const kLength = 255&

Public Function GetSysDir(Optional ByVal AddBackslash As Boolean) _
As String
Dim nBuffer As String
Dim nReturn As Long
nBuffer = Space(kLength)
nReturn = GetSystemDirectory(nBuffer, kLength)
If nReturn > 0 Then
If AddBackslash Then
GetSysDir = Left(nBuffer, nReturn) & "\"
Else
GetSysDir = Left(nBuffer, nReturn)
End If
End If
End Function


Sub DateienTesten()
Dim c As String
c = Dir(GetSysDir & "\mscomct2.ocx")
If c = "" Then
MsgBox "Die mscomct2.ocx fehlt."
Else
MsgBox "Alles klar"
End If
End Sub


Gruß OttoH

Anzeige
AW: Fehler global abfangen?!
19.04.2007 13:22:00
Till
Genau so geht's! Perfekt!
Vielen Dank!
Gruß Till

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige